我已经看到其他一些帖子有这个错误,但我已经尝试了那些建议的所有内容,但我仍然有问题。
这是我的webMethod(和类):
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class UPSImportWebServices
Inherits System.Web.Services.WebService
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
<WebMethod()> _
Public Shared Function GetInvoiceItems(ByVal invoiceId As Integer) As List(Of UPSInvoiceItem)
Return UPSInvoiceDataAccess.getInvoiceItems(invoiceId)
End Function
End Class
我只是在准备好文件时调用它:
$(document).ready(function () {
$.ajax({
type: "POST",
url: '<%=ResolveUrl("~/UPSImportWebServices.asmx/GetInvoiceItems") %>',
data: { invoiceID: "22" },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert('worked' + data)
},
error: function (response) {
alert('error: ' + response.responseText);
},
failure: function (response) {
alert('failure: ' + response.responseText);
}
});
});
这给了我错误: 未知的Web方法GetInvoiceItems。参数名称:methodname。
编辑:将invoiceID: "22"
更改为invoiceID: 22
。还有同样的问题。
答案 0 :(得分:2)
我想我发现了这个问题。我复制了一个现有的.asmx文件而不是创建一个新文件。当我访问url site.com/UPSImportWebServices.asmx时,它显示了我复制的Web服务的功能。我删除了.asmx文件并创建了一个新文件,然后复制了我的旧代码。它现在正在运作。
此外,更改为'{ invoiceId:' + 22 + '}'
。注意'和大写。新秀在这个错误。
答案 1 :(得分:1)
嗯,我认为这可能与您传递的变量类型有关。 GetInvoiceItems期望一个整数,你传递一个字符串。尝试更改此
data: { invoiceID: "22" },
到此:
data: { invoiceID: 22 },
让我知道这是否有效。如果没有,我们可以转向下一个可能性。
尝试更改此内容:
url: '<%=ResolveUrl("~/UPSImportWebServices.asmx/GetInvoiceItems") %>',
到此:
url: 'UPSImportWebServices.asmx/GetInvoiceItems',
并确保您的asmx文件的拼写正确(区分大小写)
最后,尝试将您的方法设为公开,而不是公开共享。
答案 2 :(得分:1)
尝试这样做。
data: JSON.stringify({ invoiceId: 22 })
webservice需要一个JSON字符串。
此外,参数区分大小写。 “invoiceID”中的“D”大写,而Web方法则期望它为“invoiceId”(小写d)。