加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC3中的HTML反而不是JSON的IIS响应

发布时间:2020-12-15 20:20:32 所属栏目:asp.Net 来源:网络整理
导读:主题是自我介绍的.我有开发人员和生产环境.开发人员环境是我的本地机器.我有一些行为方法,在某些事情出错(或发生错误或逻辑不一致))时,将响应状态代码设置为500,并返回Json-answer.我的常见方法如下: [HttpPost]public ActionResult DoSomething(int id){ t
主题是自我介绍的.我有开发人员和生产环境.开发人员环境是我的本地机器.我有一些行为方法,在某些事情出错(或发生错误或逻辑不一致))时,将响应状态代码设置为500,并返回Json-answer.我的常见方法如下:
[HttpPost]
public ActionResult DoSomething(int id)
{
    try
    {
         // some useful code
    }
    catch(Exception ex)
    {
         Response.StatusCode = 500;
         Json(new { message = "error" },JsonBehaviour.AllowGet)
    }
}

在客户端生产环境当发生这样的错误时,ajax.response看起来像HTML代码,而不是预期的JSON.

考虑这个:

<div class="content-container">
 <fieldset>
   <h2>500 - Internal server error.</h2>
   <h3>There is a problem with the resource you are looking for,and it cannot be displayed.</h3>
</fieldset>
</div>

过滤器上下文不是一个选项.我认为这是某种IIS或web.config问题.

解:
我们决定在Global.asax的BeginRequest中添加TrySkipIisCustomErrors,它解决了我们应用程序中每个方法的问题.

解决方法

我想IIS正在服务一些友好的错误页面.您可以尝试通过在响应上设置TrySkipIisCustomErrors属性来跳过此页面:
catch(Exception ex)
{
     Response.StatusCode = 500;
     Response.TrySkipIisCustomErrors = true;
     return Json(new { message = "error" },JsonBehaviour.AllowGet)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读