ASP.NET:使用 jQuery AJAX 的 WebMethod 返回“401 未经授权”错误
尝试在 ASP.NET WebForm 中调用 WebMethod 时使用 jQuery AJAX,可能会遇到“401(未经授权)”错误。此问题是由于 web.config 文件中的身份验证设置引起的。
WebMethod 配置如下:
[WebMethod] public static string GetClients(string searchTerm, int pageIndex) { // ... return GetData(cmd, pageIndex).GetXml(); }
jQuery AJAX 调用来自:
function GetClients(pageIndex) { $.ajax({ type: "POST", url: "ConsultaPedidos.aspx/GetClients", contentType: "application/json; charset=utf-8", dataType: "json", // ... }); }
但是,在 web.config 文件中启用用户身份验证后:
<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="/Dashboard" /> </authentication> <authorization> <deny users="?" /> </authorization>
AJAX 调用失败并出现上述错误。
解决方案:
要解决此问题,需要进行两项修改:
禁用 ASP.NET 自动命名重定向:
更改以下内容行:
settings.AutoRedirectMode = RedirectMode.Permanent;
至:
settings.AutoRedirectMode = RedirectMode.Off;
修复友好 URL 路径:
对于启用友好 URL 的网站, jQuery AJAX 调用必须是已修改:
更改:
url: "ConsultaPedidos.aspx/GetClients"
至:
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>'
这些调整将启用jQuery AJAX 调用访问 WebMethod,不会触发“401 Unauthorized”错误。
以上是为什么我的 jQuery AJAX 调用 ASP.NET WebMethod 会导致'401 未经授权”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!