我正在处理基于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是否支持响应主体?
答案 0 :(得分:4)
它是IIS,默认情况下不允许自定义内容用于报告错误的响应。为此,请在web.config中进行更改:
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>