无法从.net中的Ajax调用.asmx web-service

问题描述 投票:0回答:1

我有一个使用Windows身份验证的现有.net解决方案。现在,我在现有解决方案中添加了另一个Web服务项目,并在那里创建了一个.asmx服务。通过ajax我试图将该网络服务称为如下

Ajax请求

$.ajax({
    type: "POST",
    url: "HelloService/HelloData.asmx/HelloWorld",
    data: "{parameterList:" + JSON.stringify(model) + "}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: true,
    cache: false,
    success: function (jsondata) {
      alert(jsondata);
    }, error: function (x, e) {
      alert("Error")          
    }
});

这是我的.asmx服务

namespace HelloService
{
/// <summary>
/// Summary description for HelloData
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class HelloData : System.Web.Services.WebService
{

    [WebMethod]
    public string HelloWorld(string parameterList)
    {
        return "Hello World";
    }
}
}

在上面的代码中,我在“Application_error”方法的“Global.asax.cs”文件中收到No web service found at: /HelloService/HelloData.asmx.错误。这里有什么不对,需要做什么?

jquery asp.net .net web-services webmethod
1个回答
0
投票

它已经在代码中显示,为了从Javascript调用ASMX Web服务,您需要添加System.Web.Script.Services.ScriptService属性。

您可以简单地取消注释该行,因此您的代码将如下所示:

/// <summary>
/// Summary description for HelloData
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class HelloData : System.Web.Services.WebService
{

    [WebMethod]
    public string HelloWorld(string parameterList)
    {
        return "Hello World";
    }
}

请注意,现在应用了System.Web.Script.Services.ScriptService属性。

© www.soinside.com 2019 - 2024. All rights reserved.