Веб-служба ASP.NET для вызова из JS - PullRequest
1 голос
/ 02 февраля 2011

Я постоянно нахожу хорошее руководство о том, как написать веб-сервис с использованием .NET с Visual Studio 2010, чтобы я мог использовать его на своем HTML-сайте с помощью AJAX.

Я знаю, что был способ, называемыйASMX, но теперь он более обновлен до ServiceHost, поэтому мне нужно простое руководство, которое поможет мне создать веб-сервис asp.net с использованием объекта ServiceHost.

Извините, если это звучит двусмысленно или по-детски.1005 *

1 Ответ

2 голосов
/ 02 февраля 2011

Разместите на своей странице элемент управления ScriptManager и добавьте ссылку на свой сервис .asmx:

<asp:ScriptManager ID="myManager" runat="server">
    <Services>
        <asp:ServiceReference Path="~/MyService.asmx" />
    </Services>
</asp:ScriptManager>

В коде вашего веб-сервиса объявите свой веб-метод(обратите внимание на атрибут ScriptService ):

namespace MyServices
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [ScriptService]
    public class MyService : System.Web.Services.WebService
    {
        [WebMethod]
        public string SayHello(name)
        {
             return "Hello, " + name;
        }
    }
}

Теперь вы можете использовать веб-сервис из Javascript, как показано ниже:

function queryWebService() {
    MyServices.MyService.SayHello('Bobby', 
    function(result, userContext) {
        alert('Web-service response: ' + result);
    }, function(result) {
        alert('Error!');
    });
}

ОБНОВЛЕНИЕ

Если вы хотите использовать веб-сервис, просто отправляя HTTP-запросы GET, вы можете сделать следующее:

Украсить свой веб-метод с помощью ScriptMethod атрибут:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string SayHello(name)
{
    return "Hello, " + name;
}

Обратите внимание на свойство UseHttpGet , которое установлено в True.Возможно, вам также потребуется изменить файл web.config, чтобы разрешить такой тип взаимодействия:

<webServices>
    <protocols>
        <add name="HttpGet"/>
    </protocols>
</webServices>

Теперь вы можете сделать простой HTTP-запрос GET к вашему веб-сервису, как показано ниже (в примере используется * 1033).* jQuery.ajax ):

$.ajax({
    url: "/MyService.asmx/SayHello?name=Bobby",
    success: function(transport) {
        alert('Web-service response: ' + transport.responseText);
    }
});

Надеюсь, это поможет вам.

...