ASP.NET : WebMethod avec jQuery AJAX renvoie l'erreur « 401 non autorisée »
Lors de la tentative d'appel d'une WebMethod dans un WebForm ASP.NET en utilisant jQuery AJAX, une erreur « 401 (non autorisé) » peut être rencontrée. Ce problème est dû aux paramètres d'authentification dans le fichier web.config.
La WebMethod est configurée comme suit :
[WebMethod] public static string GetClients(string searchTerm, int pageIndex) { // ... return GetData(cmd, pageIndex).GetXml(); }
Et l'appel jQuery AJAX est effectué à partir de :
function GetClients(pageIndex) { $.ajax({ type: "POST", url: "ConsultaPedidos.aspx/GetClients", contentType: "application/json; charset=utf-8", dataType: "json", // ... }); }
Cependant, après avoir activé l'authentification utilisateur dans le fichier web.config :
<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="/Dashboard" /> </authentication> <authorization> <deny users="?" /> </authorization>
L'appel AJAX échoue avec l'erreur susmentionnée.
Solution :
Pour résoudre ce problème, deux modifications sont nécessaires :
Désactivez les redirections de nom automatique ASP.NET :
Modifiez la ligne suivante :
settings.AutoRedirectMode = RedirectMode.Permanent;
en :
settings.AutoRedirectMode = RedirectMode.Off;
Corriger l'URL conviviale Chemin :
Pour les sites Web qui activent des URL conviviales, l'URL dans l'appel jQuery AJAX doit être modifié :
Changer :
url: "ConsultaPedidos.aspx/GetClients"
À :
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>'
Ces ajustements permettront à l'appel jQuery AJAX d'accéder à la WebMethod sans déclencher l'erreur "401 Unauthorized".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!