正如您所看到的,这是来自非Web开发人员的问题。我想有一个ASPX页面,在某些情况下,可以从代码生成401错误。理想情况下,它会显示IIS标准页面。
答案 0 :(得分:57)
Response.StatusCode = 401;
Response.End();
答案 1 :(得分:54)
设置Response.StatusCode然后 - 如果您需要停止执行 - 请致电Response.End()。
答案 2 :(得分: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
方法。
答案 3 :(得分:12)
答案 4 :(得分:10)
另外一条评论。
如果页面的一部分已经写入输出缓冲区,则清除所有缓冲内容或页面可能无法正确显示非常重要。
这很可能是在模板化的环境中。例如母版页......
Response.ClearContent();
Response.StatusCode = 401;
Response.End();