web-dev-qa-db-fra.com

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

Dans la recherche de ce problème, la plupart des problèmes de SO concernaient la méthode static en tant que correctif.

Puisqu'il ne fonctionne pas avec le WebMethod réel (et un peu sophistiqué), je viens d'en créer un simple pour vérifier s'il est possible d'atteindre la méthode elle-même.

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

Cela revient toujours à 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 cela échoue-t-il?

24
Daniel Sh.

J'ai rencontré un problème dans le 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 cela a-t-il changé? Je ne sais pas :(.

16
Daniel Sh.

J'ai également eu ce problème, mais légèrement différemment, j'avais cette méthode dans un fichier .asmx et j'ai donc rencontré le problème "statique", mais d'une manière différente.

Si vous avez une méthode dans le cadre de votre classe Page, elle doit être static.

Si vous avez mis une méthode dans un fichier .asmx à utiliser sur plusieurs pages, elle ne doit pas être static.

58
Rob Church

Manque le [WebMethod] au-dessus de votre fonction côté serveur provoquera également cette erreur.

3
hogarth45

Pour moi, le principal problème était de changer javascript post pour ne passer aucun argument tel que

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

Ensuite, pour vérifier que rien n'a été mis en cache, j'ai ensuite supprimé [System.Web.Services.WebMethod] Dans le code derrière le fichier au-dessus de public static string MyData(). Ensuite, j'ai construit le projet à l'échec, puis j'ai rajouté l'attribut supprimé susmentionné et construit avec succès.

Lors de l'exécution, cela a fonctionné.

3
ΩmegaMan

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

Pour moi, c'était juste une méthode private au lieu d'une public.

1
smlnl