【发布时间】:2011-11-02 05:51:39
【问题描述】:
这个主题几乎说明了一切。我有一个必须使用 EstateId 请求参数调用的 EstateReport Web 表单。如果我们不存在此参数,我想返回一个适当的 HTTP 错误。如何返回 HTTP 错误 400 作为响应?
切线,如果所需的参数不存在,我应该返回错误,我觉得这更正确,还是重定向到报告的搜索页面,这对用户更友好?
【问题讨论】:
标签: asp.net webforms asp.net-4.0
这个主题几乎说明了一切。我有一个必须使用 EstateId 请求参数调用的 EstateReport Web 表单。如果我们不存在此参数,我想返回一个适当的 HTTP 错误。如何返回 HTTP 错误 400 作为响应?
切线,如果所需的参数不存在,我应该返回错误,我觉得这更正确,还是重定向到报告的搜索页面,这对用户更友好?
【问题讨论】:
标签: asp.net webforms asp.net-4.0
更改 HttpResponse.Status 属性。
详情:http://msdn.microsoft.com/en-us/library/system.web.httpresponse.status(v=vs.71).aspx
【讨论】:
因此,据我了解,表单需要一个参数才能以有意义的方式显示结果。 400 是一个错误请求,虽然我理解您的想法,但规范指出:
“由于语法错误,服务器无法理解该请求。客户端不应在未修改的情况下重复该请求。”
从最纯粹的意义上说,如果有人请求说“EstateReport.aspx”而没有参数,服务器仍然可以解释它并以适当的响应进行回复,因此它不是广义上的“错误请求”。
我的建议是您检测到参数的缺失并呈现适当的错误消息,其中包含指向页面的链接,他们可以通过某种方式选择适当的“estateId”,因此当请求 EstateReport 时,参数存在.
【讨论】:
你可以:
throw new HttpException(400, "Bad Request");
或
Response.StatusCode = 400;
Response.End();
但我的想法与下面的 kd7 相同 - 为什么不向客户显示错误消息让他们知道问题所在?
【讨论】:
new 而不是New。