ASP.NET 调用 WebMethod with jQuery AJAX 出现 "401 (Unauthorized)"
在 ASP.NET Webform 中调用 WebMethod 时遇到 "401 (Unauthorized)" 错误,这是常见的问题。本文将探讨导致此问题的潜在原因并提供解决方案。
解决方案
原问题中给出的解决方案是修改 ~/App_Start/RouteConfig.cs 文件,将以下行
settings.AutoRedirectMode = RedirectMode.Permanent;
更改为
settings.AutoRedirectMode = RedirectMode.Off;
或注释掉此行。如果启用了友好 URL,还需要将以下行
url: "ConsultaPedidos.aspx/GetClients",
更改为
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>',
分析
"401 (Unauthorized)" 错误表明服务器无法验证客户端的请求。在 ASP.NET 中,WebForms 页面默认使用 Forms 身份验证,当用户未通过身份验证时会自动重定向到登录页面。
~/App_Start/RouteConfig.cs 文件中 settings.AutoRedirectMode 设置指定当请求的 URL 不存在时如何处理重定向。默认值为 RedirectMode.Permanent,这意味着将永久重定向到登录页面,即使客户端已经通过身份验证也无法访问原始 URL。将此设置更改为 RedirectMode.Off 或注释掉此行可禁用自动重定向。
此外,如果启用了友好 URL,则 jQuery AJAX 请求将使用客户端相对 URL(例如 "ConsultaPedidos.aspx/GetClients")。这会导致服务器无法解析请求,并返回 "401 (Unauthorized)" 错误。使用 ResolveUrl 方法将相对 URL 转换为绝对 URL 可以解决此问题。
以上是为什么在使用 jQuery AJAX 调用 ASP.NET WebMethod 时出现'401(未经授权)”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!