ASP.NET encountered "401 (Unauthorized)" when calling WebMethod with jQuery AJAX
Encountered when calling WebMethod in ASP.NET Webform "401 (Unauthorized)" error, this is a common problem. This article will explore the potential causes of this problem and provide solutions.
Solution
The solution given in the original question is to modify the ~/App_Start/RouteConfig.cs file and replace the following lines
settings.AutoRedirectMode = RedirectMode.Permanent;
Change to
settings.AutoRedirectMode = RedirectMode.Off;
or comment out this line. If friendly URLs are enabled, you also need to change the following line
url: "ConsultaPedidos.aspx/GetClients",
to
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>',
Analysis
"401 (Unauthorized)" The error indicates that the server cannot authenticate the client's request. In ASP.NET, WebForms pages use Forms authentication by default, automatically redirecting to the login page when the user is not authenticated.
The settings.AutoRedirectMode setting in the ~/App_Start/RouteConfig.cs file specifies how redirects are handled when the requested URL does not exist. The default value is RedirectMode.Permanent, which means that the redirect to the login page will be permanent and the original URL will not be accessible even if the client is authenticated. Change this setting to RedirectMode.Off or comment out this line to disable automatic redirection.
Additionally, if Friendly URLs are enabled, jQuery AJAX requests will use client-relative URLs (e.g. "ConsultaPedidos.aspx/GetClients"). This causes the server to be unable to parse the request and return a "401 (Unauthorized)" error. Converting the relative URL to an absolute URL using the ResolveUrl method can resolve this issue.
The above is the detailed content of Why Am I Getting a '401 (Unauthorized)' Error When Calling an ASP.NET WebMethod with jQuery AJAX?. For more information, please follow other related articles on the PHP Chinese website!