首页 > 后端开发 > C++ > 为什么我的 jQuery AJAX 调用 ASP.NET WebMethod 会导致'401 未经授权”错误?

为什么我的 jQuery AJAX 调用 ASP.NET WebMethod 会导致'401 未经授权”错误?

DDD
发布: 2025-01-04 08:31:34
原创
492 人浏览过

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

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 调用失败并出现上述错误。

解决方案:

要解决此问题,需要进行两项修改:

  1. 禁用 ASP.NET 自动命名重定向:

    • 打开 App_Start 文件夹中的 RouteConfig.cs 文件。
    • 更改以下内容行:

      settings.AutoRedirectMode = RedirectMode.Permanent;
      登录后复制

      至:

      settings.AutoRedirectMode = RedirectMode.Off;
      登录后复制
  2. 修复友好 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板