我有一个现有的.net解决方案,它使用Windows身份验证。现在,我在现有解决方案中添加了另一个 Web 服务项目,并在那里创建了一个 .asmx 服务。通过ajax,我尝试调用该Web服务,如下所示
阿贾克斯请求
$.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.
收到错误。这里出了什么问题,需要做什么?
代码中已经显示了它,为了从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
属性。