正如您所看到的,这是来自非Web开发人员的问题.我想有一个ASPX页面,在某些情况下,可以从代码生成401错误.理想情况下,它会显示IIS标准页面.
Response.StatusCode = 401; Response.End();
设置Response.StatusCode然后 - 如果需要停止执行 - 调用Response.End().
我想我还是喜欢:
throw new HttpException(401, "Auth Failed")
我认为该Response.StatusCode
方法不会触发web.config文件中定义的自定义错误,例如
抛出新异常肯定会触发自定义错误.
此外,您可能正在使用应用程序范围的错误日志记录工具,如ELMAH或其他东西,我不认为该Response.StatusCode
方法也会记录在那里.
注意:我现在看到问题说,理想情况下,应该显示标准的IIS错误页面.显然,不需要自定义错误页面.Response.StatusCode
在那种情况下我会使用这种方法.
根据MSDN,您应该能够使用以下内容.
Throw New HttpException(401, "Auth Failed")
编辑看到其他响应后,设置状态代码会更合适.
另外一条评论.
如果页面的一部分已经写入输出缓冲区,则清除任何缓冲的内容或页面可能无法正确显示非常重要.
这很可能是在模板化的环境中.例如母版页......
Response.ClearContent(); Response.StatusCode = 401; Response.End();