未知的网络方法。参数名称:methodName

时间:2013-12-22 23:27:38

标签: c# asp.net ajax pagemethods

在研究这个问题时,大多数SO问题都是关于static方法作为修复。

由于它没有使用真正的(有点复杂的)WebMethod,我刚刚创建了一个简单的方法,以便检查是否可以达到方法本身。

[WebMethod]
[ScriptMethod(UseHttpGet = false)]
public static string HelloWorld()
{
    return "Hello World!";
}

电话。

<script>
    $(document).ready(function () {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "usersWebMethods.aspx/HelloWorld",
            dataType: "json",
            success: function (data) {
                alert(data.d);
            }
        });
   });
</script>

始终归结为500 (Internal Server Error)

Unknown web method HelloWorld.
Parameter name: methodName
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.ArgumentException: Unknown web method HelloWorld.
Parameter name: methodName

为什么会失败?

6 个答案:

答案 0 :(得分:57)

我也有这个问题,但稍微不同的是我在.asmx文件中使用了这个方法,因此遇到了&#34;静态&#34;问题,但以不同的方式。

如果您有一个方法作为您的Page类的一部分, 必须 static

如果您已将方法放在.asmx文件中以跨多个页面使用,则 不得 static

答案 1 :(得分:16)

我在实际的.aspx文件中遇到了问题,就是

<%@ Page Language="C#" 
         AutoEventWireup="true" 
         CodeBehind="xxx.xxx.cs" Inherits="xxx.xxx" %>
代码中没有

。它是如何改变的?我不知道:(。

答案 2 :(得分:3)

对我来说,主要问题是更改javascript post以传递无参数,例如

$http.post("Status.aspx/MyData", {})

然后,为了验证没有缓存任何内容,我随后在[System.Web.Services.WebMethod]上方的代码隐藏文件中删除了public static string MyData()。然后我将项目构建为失败,然后重新添加了前面提到的已删除属性并构建成功。

运行后就可以了。

答案 3 :(得分:3)

错过服务器端功能上方的[WebMethod]也会导致此错误。

答案 4 :(得分:1)

说实话,我刚刚再次意识到在某些情况下我们可能会很累。

对我来说,它只是一种private方法,而不是public方法。

答案 5 :(得分:0)

就我而言,URL中有一个问题,它是一个Asp.Net网站应用程序:

例如:

$.ajax({
 type: "POST",
 contentType: "application/json; charset=utf-8",
 url: "usersWebMethods.aspx/HelloWorld",  <----- Here 
 dataType: "json",
 success: function (data) {
    alert(data.d);
 }
});

我的usersWebMethods.aspx位于UI(自定义创建)文件夹中,因此,如果我将URL设置为usersWebMethods.aspx/HelloWorld,它将无法正常工作,但是当我向其添加前导/时,则使用ajax方法正确调用!

更改自:

usersWebMethods.aspx/HelloWorld

收件人

/usersWebMethods.aspx/HelloWorld  --