Maison > développement back-end > C++ > Pourquoi mon appel jQuery AJAX à une méthode Web ASP.NET entraîne-t-il une erreur « 401 non autorisée » ?

Pourquoi mon appel jQuery AJAX à une méthode Web ASP.NET entraîne-t-il une erreur « 401 non autorisée » ?

DDD
Libérer: 2025-01-04 08:31:34
original
591 Les gens l'ont consulté

Why Does My jQuery AJAX Call to an ASP.NET WebMethod Result in a

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();
}
Copier après la connexion

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",
        // ...
    });
}
Copier après la connexion

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>
Copier après la connexion

L'appel AJAX échoue avec l'erreur susmentionnée.

Solution :

Pour résoudre ce problème, deux modifications sont nécessaires :

  1. Désactivez les redirections de nom automatique ASP.NET :

    • Ouvrez le fichier RouteConfig.cs dans le dossier App_Start.
    • Modifiez la ligne suivante :

      settings.AutoRedirectMode = RedirectMode.Permanent;
      Copier après la connexion

      en :

      settings.AutoRedirectMode = RedirectMode.Off;
      Copier après la connexion
  2. 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"
        Copier après la connexion
      • À :

        url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>'
        Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal