Méthode Web inconnue. Nom du paramètre: methodName

dans la recherche de ce problème la plupart des questions portaient sur le static méthode comme solution.

Puisqu'il ne fonctionne pas avec la vraie (et un peu sophistiquée) WebMethod je viens de créer un simple pour le plaisir de vérifier si atteindre la méthode elle-même est possible.

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

L'appel.

<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>

il s'agit toujours de 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

Pourquoi est-ce une faute?

20
demandé sur Daniel Sh. 2013-12-23 03:27:38

5 réponses

j'ai eu ce problème aussi, mais un peu différemment j'ai eu cette méthode dans un .asmx fichier et donc couru à travers la "statique", mais d'une manière différente.

si vous avez une méthode dans votre classe de Page, elle static.

si vous avez mis une méthode dans un .asmx fichier à utiliser sur plusieurs pages, il ne doit passtatic.

50
répondu Rob Church 2017-06-28 13:19:07

j'ai eu un problème dans le réel .fichier aspx, la ligne

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

n'était pas présent dans le code. Comment ont-ils changé? Je ne sais pas :(.

16
répondu Daniel Sh. 2017-06-28 13:37:17

Pour moi, les principaux enjeux était de changer le javascript post pour passer dans aucun des arguments tels que

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

alors pour vérifier que rien n'était caché, j'ai supprimé [System.Web.Services.WebMethod] dans le fichier code-behind ci-dessus public static string MyData(). Puis j'ai construit le projet à l'échec, puis a rajouté l'attribut supprimé mentionné ci-dessus et construit à la réussite.

en cours d'exécution, cela a fonctionné.

1
répondu ΩmegaMan 2017-06-23 18:41:39

manquer la [WebMethod] au-dessus de votre fonction Côté Serveur causera également cette erreur.

1
répondu hogarth45 2018-02-02 21:57:15

pour être honnête, je viens de réaliser "encore" à quel point nous pouvons être fatigués dans certains cas.

Pour moi, c'était juste un "privé" méthode au lieu de publics.

0
répondu smlnl 2018-08-31 11:36:16