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

ASP.NET MVC中AJAX GET请求返回Json报500错误的解决方法

解决ASP.NET MVC中GET请求返回Json的500内部错误

这个问题我之前也碰到过,其实就是ASP.NET MVC的默认安全限制在起作用,咱们直接来看怎么解决:

核心修正:允许GET请求返回Json

你看到的错误提示已经说得很清楚了——框架默认阻止GET请求返回Json,防止敏感信息通过URL泄露。只需要在控制器的Transfer Action里,返回Json时加上JsonRequestBehavior.AllowGet参数就行:

public ActionResult Transfer(long id) {
    // 你的业务逻辑代码
    return Json(
        new { newUrl = PartialView("~/Views/Shared/Partials/Leads/_TransferPopup.cshtml", commonModel) },
        JsonRequestBehavior.AllowGet // 加上这个参数就搞定了
    );
}

为什么会出现这个问题?

ASP.NET MVC出于安全考虑,默认不允许通过GET请求返回Json数据。因为GET请求的响应内容会被浏览器缓存,而且参数和响应都可能出现在URL、浏览器历史或日志里,存在敏感信息泄露的风险。加上JsonRequestBehavior.AllowGet就是明确告诉框架:你已经确认这个场景下使用GET返回Json是安全的。

额外的优化建议

  1. 优先考虑使用POST请求:如果你的Transfer操作涉及修改数据(而不是单纯获取),更推荐改用POST请求。这样既符合HTTP的语义规范,也能避开这个Json请求的限制,只需要改两处:
    • AJAX代码里把type: "GET"改成type: "POST"
    • 控制器Action上添加[HttpPost]特性:
      [HttpPost]
      public ActionResult Transfer(long id) {
          // 业务逻辑代码
          return Json(new { newUrl = ... });
      }
      
  2. 优化URL写法:可以把AJAX的URL改成路由参数形式,比如"/Internet/Transfer/" + modelId,然后在路由配置里对应规则,这样比拼接查询字符串更整洁,也更符合REST风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:56:21