微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用MVC控制器发送自定义HTTP 400错误消息?

如何解决如何使用MVC控制器发送自定义HTTP 400错误消息?

很奇怪,不确定为什么。 我有一个旧的mvc网站,并且想要添加一些自定义错误消息。例如,当http状态代码为400时,我要输出

{
    "error": {
        "code": "","message": "xxx is wrong with ..."
    }
}

所以我使用了解决方here

return new HttpStatusCodeResult(HttpStatusCode.BadRequest,@"{
                ""error"": {
                    ""code"": "",""message"": ""xxx is wrong with ...""
                }
            }");

但是有两个问题:

  1. 它无法处理json消息,如上例所示,显示了502错误的网关错误
  2. 对于基本字符串,它可以工作,但是我的文字在描述中,正文仍然是“错误的请求”。

    enter image description here

我尝试了许多其他方式(例如,发送HttpResponseMessage),但没有一种有效。使用HttpResponseMessage,

return new HttpResponseMessage(HttpStatusCode.BadRequest)
            {
                ReasonPhrase = HttpStatusCode.BadRequest.ToString(),Content = new StringContent("hello")
            };

我实际上是 status 200 ,正文是:

StatusCode: 400,ReasonPhrase: 'BadRequest',Version: 1.1,Content: System.Net.Http.StringContent,Headers:
{
Content-Type: text/plain; charset=utf-8
}

所以我想输出带有某些Json正文的BadRequest状态消息,该怎么办?

解决方法

两天后,我终于解决了。

上一个stackoverflow问题的解决方案实际上可以在我的本地计算机上使用,但是当我部署到服务器时不会输出任何信息。

在我的本地计算机上,VS将在IIS Express中运行代码,而在服务器上是IIS。因此,在web.config中,我实际上需要这些行:

<system.webserver>
    <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"></httpErrors>
</system.webserver>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。