.NET发送带有响应正文的HTTP 400

时间:2015-11-18 11:13:38

标签: asp.net .net vb.net web-services

我正在处理基于AJAX的表单提交,该表单也将作为其他应用程序的API提供。因此,我正在验证保存例程中的请求,以确保字段包含相关数据(数字字段中的数字,日期字段中的日期等)

我认为,如果用户在请求中提交无意义数据但是如果我将HTTP状态代码设置为400,那么返回HTTP 4xx响应代码应该是最佳做法,那么我没有得到响应正文文本。

我继承了HTTPException以跟踪我想要传递给客户端的错误的具体细节,API交互将全部通过JSON进行。

我的代码是(大致):

try
    //my request validation code
catch e as myRequestLoadException
    response.write("{")
    response.write("""errormessage"": """ & e.message.replace("""","\""") & """")
    response.write("""errortext"": """ & e.tostring.replace("""","\""") & """")
    response.write("}")
    Response.StatusCode = e.myStatusCode
end try

我使用Postman或Chrome开发者工具获得的回复是:

" 错误请求"

如果我删除了我设置响应状态代码的行并重复测试,那么我得到了我期待的响应。

IIS,.net框架甚至Chrome是否支持响应主体?

1 个答案:

答案 0 :(得分:4)

它是IIS,默认情况下不允许自定义内容用于报告错误的响应。为此,请在web.config中进行更改:

<system.webServer>
  <httpErrors existingResponse="PassThrough" />
</system.webServer>

取自this article