JLo*_*JLo 2 .net vb.net asp.net web-services
我正在处理基于 AJAX 的表单提交,该表单也将作为 API 提供给其他应用程序。因此,我正在验证进入 Save 例程的请求,以确保字段包含相关数据(数字字段中的数字、日期字段中的日期等)
我认为,如果用户在请求中提交无意义的数据,返回 HTTP 4xx 响应代码应该是最佳实践,但如果我将 HTTP 状态代码设置为 400,则我不会收到响应正文。
我继承了 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
Run Code Online (Sandbox Code Playgroud)
我使用 Postman 或 Chrome 开发人员工具得到的响应是:
“错误的请求”
如果我删除设置响应状态代码的行并重复测试,那么我会得到我期望的响应。
那么是 IIS、.net 框架还是 Chrome 不提供响应主体?
它是 IIS,默认情况下不允许自定义内容用于报告错误的响应。为此,请在您的 web.config 中进行更改:
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
取自这篇文章
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |