0

我已经看到其他一些带有此错误的帖子,但我已经尝试了其中建议的所有内容,但仍然遇到问题。

这是我的 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);
        }
    });
});

这给了我错误:未知的网络方法 GetInvoiceItems。参数名称:方​​法名。

编辑:更改invoiceID: "22"invoiceID: 22. 仍然有同样的问题。

4

3 回答 3

2

我想我弄清楚了这个问题。我复制了一个现有的 .asmx 文件,而不是创建一个新文件。当我访问 url site.com/UPSImportWebServices.asmx 时,它显示了我复制的 Web 服务的功能。我删除了那个 .asmx 文件并创建了一个新文件,然后复制了我的旧代码。它现在正在工作。

此外,更改为'{ invoiceId:' + 22 + '}'. 注意 ' 和大写。菜鸟在这一点上犯了错误。

于 2013-05-29T16:22:04.413 回答
1

好吧,我认为这可能与您传递的变量类型有关。GetInvoiceItems 需要一个整数,您正在向它传递一个字符串。尝试改变这个

data: { invoiceID: "22" },

对此:

data: { invoiceID: 22 },

让我知道这是否有效。如果没有,我们可以转到下一个可能性。

尝试改变这个:

url: '<%=ResolveUrl("~/UPSImportWebServices.asmx/GetInvoiceItems") %>',

对此:

 url: 'UPSImportWebServices.asmx/GetInvoiceItems',

并确保您的 asmx 文件的拼写正确(区分大小写)

最后,尝试将您的方法设为公开,而不是公开共享。

于 2013-05-29T16:06:49.370 回答
1

尝试这样做。

data: JSON.stringify({ invoiceId: 22 })

Web 服务需要一个 JSON 字符串。

此外,参数区分大小写。您在“invoiceID”中的“D”是大写的,而 Web 方法期望它是“invoiceId”(小写 d)。

于 2013-05-29T16:15:38.630 回答