未知的网络方法。参数名称:methodName
Posted
技术标签:
【中文标题】未知的网络方法。参数名称:methodName【英文标题】:Unknown web method. Parameter name: methodName 【发布时间】:2014-01-11 04:16:56 【问题描述】:在研究这个问题时,大多数 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
为什么会失败?
【问题讨论】:
static
网络方法是not supported。
也许我全都错了,或者我没有正确解释自己。这只是一个在代码隐藏中使用 webmethods 的 .aspx 页面。这不是网络服务。
啊,好的,您使用的是 ScriptManager 吗?如果是这样,您是否启用了EnableScriptMethods?
不,只是使用 jQuery,我确信不需要使用 ScriptManager
承认这一点很尴尬,但我的问题是因为该方法的访问修饰符是私有的而不是公共的......
【参考方案1】:
我也遇到过这个问题,但略有不同的是,我在 .asmx 文件中使用了这个方法,因此遇到了“静态”问题,但方式不同。
如果您有一个方法作为 Page 类的一部分,它必须是static
。
如果您将方法放在 .asmx 文件中以跨多个页面使用,则它不得为static
。
【讨论】:
我在 ASP .NET 页面中使用 WebMethod 时遇到了同样的问题,只是将其设为静态并开始工作。 +1 将页面成员方法转换为 Web 方法并忘记更改范围和成员属性.... 我不敢相信这有效!在我的 asmx 页面中,我有一个公共静态方法。去除静电后,该方法成功命中!谢谢!【参考方案2】:我在实际的 .aspx 文件中遇到了问题,这一行
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="xxx.xxx.cs" Inherits="xxx.xxx" %>
代码中不存在。它是如何改变的?我不知道:(。
【讨论】:
很高兴它帮助了@Rahul :) 哇哈哈哈哈哈非常感谢。真是愚蠢地花了 3 个小时在上面 @INgeeg 很高兴我能帮上忙 :) .aspx 页面有什么问题? 感谢您在这里为我们这些遭受同样悲惨境遇的人承认这一点!【参考方案3】:对我来说,主要问题是更改 javascript post
以不传入任何参数,例如
$http.post("Status.aspx/MyData", )
然后为了验证没有缓存,然后我删除了 public static string MyData()
上方代码隐藏文件中的 [System.Web.Services.WebMethod]
。然后我将项目构建失败,然后重新添加上述删除的属性并构建成功。
运行后它起作用了。
【讨论】:
第二部分对我有用。这是某种愚蠢的缓存问题。通过在末尾(客户端和服务器端)添加“2”来重命名函数并且它起作用了!将其重命名为原始名称:STILL 工作,尽管代码现在与它不工作时的字节相同。而且我已经清理了临时 ASP.NET 文件,所以上帝知道它被缓存在哪里......(RAM?)【参考方案4】:在服务器端函数上方缺少[WebMethod]
也会导致此错误。
【讨论】:
我已经这样做了一百次了,我总是忘记属性。谢谢!【参考方案5】:说实话,我刚刚“再次”意识到在某些情况下我们可能会感到多么疲倦。
对我来说,这只是一个 private
方法,而不是 public
方法。
【讨论】:
是的,很累。protected
方法也是如此。【参考方案6】:
在我的例子中,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 --
【讨论】:
以上是关于未知的网络方法。参数名称:methodName的主要内容,如果未能解决你的问题,请参考以下文章
EParseError wamp:配置文件在第 592 行包含语法错误。未知参数名称“类型”