You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# ASPX页面AJAX请求返回401认证失败问题求助

AJAX请求调用WebMethod失败排查与解决

问题详情

尝试通过AJAX调用ASP.NET WebMethod实现交互但未成功,相关代码与错误现象如下:

后端代码(Mypage.aspx.cs)

[WebMethod]
public static string doSomething(int id)
{
    return "hello";
}

前端AJAX代码(Mypage.aspx)

$.ajax({
    type: "POST",
    url: "Mypage.aspx/doSomething",
    data: "{'id':'1'}",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    headers: {
        "Authorization": 'Bearer <%: Token %>'
    },
    success: function (data) {
        console.log(data);
        var returnedstring = data.d;
        var jsondata = $.parseJSON(data.d);
    }
});

错误表现

  1. 当设置contentType: "application/json; charset=utf-8"时,返回认证失败响应:
{
    "Message": "Authentication failed.",
    "StackTrace": null,
    "ExceptionType": "System.InvalidOperationException"
}
  1. 若将Content-Type改为"text/json",会触发两次请求:第一次返回301重定向状态,第二次返回完整页面,相关请求截图:
    请求截图1
    请求截图2
    请求截图3
    请求截图4

解决思路与方案

1. 认证失败问题处理

  • 验证Token有效性:检查<%: Token %>输出的Bearer令牌是否过期、格式是否符合认证机制要求(如JWT格式),可在浏览器控制台直接打印Token值确认。
  • 调整WebMethod认证权限:若该接口无需身份验证,可添加[AllowAnonymous]属性;若需认证,确保当前请求的Token已通过服务器验证:
[WebMethod]
[AllowAnonymous] // 无需认证时添加
public static string doSomething(int id)
{
    return "hello";
}
  • 检查路径正确性:确认Mypage.aspx/doSomething路径无大小写错误(IIS默认路径大小写敏感),且未被站点重写规则拦截。

2. 请求格式修正

  • 标准化JSON数据:前端传入的data需符合标准JSON格式,将单引号改为双引号,或直接用JSON.stringify生成数据,避免解析失败:
data: JSON.stringify({ id: 1 }),
  • 保持正确Content-Type:ASP.NET WebMethod仅支持application/json作为请求内容类型,text/json会导致服务器无法解析请求,需保留contentType: "application/json; charset=utf-8"。

3. 重定向问题排查

  • 检查站点URL重写规则,确认未将aspx请求强制重定向到其他路径。
  • 排查Mypage.aspx页面的Page_Load等事件,确保没有页面级的跳转逻辑干扰AJAX请求。

内容的提问来源于stack exchange,提问作者TheHunter Shergill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:00:12