Неизвестный веб-метод. Имя параметра: methodName

При исследовании этой проблемы большинство проблем 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

Почему это не удается?

Ответы

Ответ 1

У меня была проблема в реальном файле .aspx, строка

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

не было в коде. Как это изменилось? Я не знаю :(.

Ответ 2

У меня тоже была эта проблема, но несколько иначе я использовал этот метод в файле .asmx и поэтому столкнулся с "статической" проблемой, но по-другому.

Если у вас есть метод как часть вашего класса, он должен быть static.

Если вы поместили метод в файл .asmx для использования на нескольких страницах, он не должен быть static.

Ответ 3

Для меня основной проблемой было изменение javascript post для передачи без аргументов, таких как

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

Затем, чтобы убедиться, что ничего не было кэшировано, я удалил [System.Web.Services.WebMethod] в код за файлом выше public static string MyData(). Затем я построил проект с ошибкой, затем повторно добавил вышеупомянутый удаленный атрибут и был создан для успеха.

После запуска это сработало.

Ответ 4

Отсутствие [WebMethod] над вашей серверной функцией также приведет к этой ошибке.

Ответ 5

Честно говоря, я только что "снова" осознал, насколько мы устали в некоторых случаях.

Для меня это был просто метод private вместо метода public.

Ответ 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 (Custom Created), поэтому, если я добавлю URL как usersWebMethods.aspx/HelloWorld, он не будет работать, но когда я добавлю к нему ведущий /, тогда будет правильно вызван метод ajax!

Изменено с:

usersWebMethods.aspx/HelloWorld

Для

/usersWebMethods.aspx/HelloWorld  --