C# 如何从MVC视图调用ASMXWebService?

C# 如何从MVC视图调用ASMXWebService?,c#,ajax,asp.net-mvc,web-services,asp.net-mvc-4,C#,Ajax,Asp.net Mvc,Web Services,Asp.net Mvc 4,以下是我尝试使用的WebService方法-: [WebMethod] public string HelloWorld() { return "Hello World"; } 使用ajax调用调用此方法 $.ajax({ type: "POST", url: "/WebServices/WebService1.asmx/HelloWorld", data: "{}", contentType: "applicat

以下是我尝试使用的WebService方法-:

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
使用ajax调用调用此方法

$.ajax({
    type: "POST",
    url: "/WebServices/WebService1.asmx/HelloWorld",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    success: function (msg) {
        var data = msg.d;
    },
    error: function (msg) {
        alert(msg.responseText);
    }
});

但是,每次我都会遇到找不到资源的错误,可能是因为我是从MVC视图调用它的,我还试图将整个localhost路径仍存在找不到资源的错误,有人能给我一个从MVC视图调用asmx webservice的小例子吗?

尝试将这一行添加到您的RouteConfig中:

routes.IgnoreRoute("{*x}", new { x = @".*\.asmx(/.*)?" });
另外,在asmx web服务类中取消注释此行:

[System.Web.Script.Services.ScriptService]

您有一个很好的教程:

尝试从视图调用操作方法,然后从控制器操作调用您的web方法无论它是来自MVC视图还是web表单页面,甚至是普通HTML页面。一旦它到达客户端,就只有HTML和JavaScript了。只需确保您在客户端的路径是正确的。确保在调用Web服务时,它实际上正在运行。在Visual Studio中,有一个选项“多个启动项目”,可通过解决方案(右键单击)->设置启动项目…->多个启动项目。设置操作=开始您的WebService项目+您的WebApplication项目。