Как вызвать WebMethod?

Я пытаюсь вызвать WebMethodиз JavaScript. На данный момент у меня есть:

EMSWebService.asmx:

namespace EMSApplication.Web.WebServices
{
    /// <summary>
    /// Holds the Webservice methods of EMSApplication
    </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]     
    [System.Web.Script.Services.ScriptService]
    public class EMSWebService : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

На странице aspx я добавил следующее:

<asp:ScriptManager ID="ScriptManager" runat="server">
    <Services>
        <asp:ServiceReference Path="~/WebServices/EMSWebService.asmx" />
    </Services>
</asp:ScriptManager>
<input onclick="callWebMethod();" id="btn" type="button" value="Click Me" />

И JavaScript:

<script type="text/javascript">
    function callWebMethod() {
        EMSApplication.Web.WebServices.EMSWebService.HelloWorld(OnComplete, OnError);            
    }

    function OnComplete(result) {
        alert(result);
    }

    function OnError(result) {
        alert(result.get_message());
    }

</script>

Но метод не выполняется. Я получаю следующую ошибку JavaScript:

EMSApplication не определено.

Я что-то упустил? Нужно ли мне делать какую-то другую конфигурацию?

Структура проекта показана ниже:

enter image description here

JavaScript и компоненты находятся в файле Login.aspx.

Имеет ли какое-либо значение URL-адрес [WebService(Namespace = "http://tempuri.org/")]


Изменить:

Я также пробовал это с помощью jQuery и модифицировал страницу aspx следующим образом:

$(document).ready(function () {
        $("#btn").click(function () {                
            $.ajax({
                type: "POST",
                url: "../WebServices/EMSWebService.asmx/HelloWorld",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    alert(response.d);                        
                },
                failure: function (msg) {                        
                    alert(msg.d);
                }
            });
            return true;
        });
    });

Я написал System.Diagnostics.Debug.WriteLine("Hello World");внутри WebMethodвыполняется, то есть печатает «Hello World» в окне вывода Visual Studio, но я не получаю никакого предупреждающего сообщения.

7
задан Sebastian Simon 18 February 2016 в 14:40
поделиться