PageMethods dans ASP.NET n’a pas fonctionné si le routage ASP.NET est implémenté

J’ai une méthode web:

[System.Web.Services.WebMethod] public static ssortingng getCharacterstics(int product_id, int lang_id) { // code goes here... } 

Je veux y accéder en utilisant PageMethods comme: (À condition que j’ai activé Enable PageMethods dans ScriptManager):

  $(document).ready( function () { $('#characterstics').html("loading"); // '' , '' PageMethods.getCharacterstics(0 ,0 , OnSave); } ); function OnSave(result) { }  

Je reçois le message d’erreur “le message http verbe au chemin d’access .. n’est pas autorisé”

Je l’ai googlé et chercher le SO aussi mais ne trouve aucune solution à ce sujet Basé sur le routage ASP.NET.

Ce que je crois, c’est qu’en raison du routage asp.net, les méthodes de service ne sont pas accessibles.

De plus, je pense que je ne peux même pas utiliser JSON à cause du routage asp.net.

Toute aide est appréciée.

Mis à jour:

Si je lance la page avec cette URL:

 http://localhost:2606/searchdetail.aspx 

La méthode Web exécutée avec succès.

À présent

J’ai un routage comme ça:

  routes.MapPageRoute("searchdetail", "searchdetail/{ID}", "~/searchdetail.aspx"); routes.MapPageRoute("searchdetail", "searchdetail", "~/searchdetail.aspx"); 

Set_path () ne fonctionnera que pour le cas 2 c’est-à-dire sans ID mais ne fonctionnera pas avec le cas 1

si j’essaye

  http://localhost:2606/searchdetail 

Ça fonctionne bien

mais si j’essaie d’utiliser:

 http://localhost:2606/searchdetail/123 

Il donne une erreur à cet object attendu.

Donc set_path () est l’option que dois-je écrire.

Actuellement, les méthodes Web ne fonctionnent pas de manière transparente avec la structure de routage. Il y a un travail autour. Vous devez accéder directement aux méthodes de page en procédant comme suit en javascript:

 PageMethods.set_path('/the/path/to/your/page.aspx'); PageMethods.YourMethod(params, onSuccess, onFailure); 

J’espère que ça aide.

J’ai continué à courir moi-même. Lorsque le routage est activé, si j’ajoutais une valeur au chemin, le système échouait à nouveau. Cette solution est un peu un bidouillage, mais elle semble fonctionner de manière constante.

Créez un lien hypertexte de contrôle de serveur où l’URL de navigation fait référence à lui-même, puis une fois que le contrôle est rendu, récupérez le href et utilisez-le pour set_path

Cela évite le problème de set_path ne faisant pas référence au bon emplacement si vous avez appelé