asp.net 未知的Web方法,参数名称:方法Name

ny6fqffe  于 2022-11-19  发布在  .NET
关注(0)|答案(7)|浏览(375)

在研究这个问题时,大多数SO问题都是关于static方法的。
由于它不能与真实的的(有点复杂的)WebMethod一起工作,我只是创建了一个简单的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

为什么会失败?

cbjzeqam

cbjzeqam1#

我也遇到了这个问题,但稍微不同的是,我在.asmx文件中遇到了这个方法,因此遇到了“静态”问题,但方式不同。
如果你有一个方法作为你的Page类的一部分,它***必须***是static
如果您已经将方法放在.asmx档案中以跨数个页面使用,则它***一定不能***为static

fruv7luv

fruv7luv2#

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

<%@ Page Language="C#" 
         AutoEventWireup="true" 
         CodeBehind="xxx.xxx.cs" Inherits="xxx.xxx" %>

代码中没有。它是如何被更改的?我不知道:(。

nxowjjhe

nxowjjhe3#

对我来说,主要的问题是更改javascript post,使其不传递参数,例如
$http.post("Status.aspx/MyData", {})
然后,为了验证没有缓存任何内容,我删除了public static string MyData()上面的代码隐藏文件中的[System.Web.Services.WebMethod]。然后,我构建了失败的项目,然后重新添加了前面提到的已删除属性,并构建成功。
在运行时,它工作。

vjhs03f7

vjhs03f74#

缺少服务器端函数上面的[WebMethod]也会导致此错误。

aamkag61

aamkag615#

老实说,我刚刚“再次”意识到我们在某些情况下会有多累。
对我来说,它只是一个private方法,而不是一个public方法。

6mzjoqzu

6mzjoqzu6#

在我的例子中,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  --
gt0wga4j

gt0wga4j7#

我在ASP.NET(框架/web表单)中遇到了这个问题,JS使用webservice,我通过从方法声明中删除static关键字解决了这个问题

[WebMethod]
 public List<ViewModel> GetAirLines()
 {
   //Code goes here
 }

代替

[WebMethod]
 public static List<ViewModel> GetAirLines()
 {
   //Code goes here
 }

相关问题