如您所见,这是来自非 Web 开发人员的问题。我想要一个 ASPX 页面,在某些情况下,它可以从代码中生成 401 错误。理想情况下,它将显示 IIS 标准页面。
Detlef
问问题
41830 次
5 回答
59
Response.StatusCode = 401;
Response.End();
于 2008-10-20T07:00:10.253 回答
58
设置Response.StatusCode然后 - 如果您需要停止执行 - 调用Response.End()。
于 2008-10-20T07:00:07.803 回答
44
我想我还是更喜欢:
throw new HttpException(401, "Auth Failed")
我认为该Response.StatusCode
方法不会触发 web.config 文件中定义的自定义错误,例如
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="401" redirect="AuthFailed.htm" />
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
抛出一个新的异常肯定会触发自定义错误。
此外,您可能正在使用应用程序范围的错误记录工具,如ELMAH或其他东西,我认为该Response.StatusCode
方法也不会在那里记录。
注意:我现在看到问题说,理想情况下,应该显示标准 IIS 错误页面。显然,不需要自定义错误页面。在这种情况下,我会使用该Response.StatusCode
方法。
于 2009-10-26T22:39:45.877 回答
12
于 2008-10-20T06:58:46.307 回答
10
补充一条评论。
如果页面的一部分已经被写入输出缓冲区,那么清除任何缓冲内容很重要,否则页面可能无法正确显示。
这很可能在模板化环境中。例如母版页...
Response.ClearContent();
Response.StatusCode = 401;
Response.End();
于 2011-10-05T21:24:21.757 回答