如何在ASP.NET页面中以编程方式生成401错误
-
03-07-2019 - |
题
正如您所看到的,这是来自非Web开发人员的问题。我想有一个ASPX页面,在某些情况下,可以从代码生成401错误。理想情况下,它会显示IIS标准页面。
解决方案
设置 Response.StatusCode 然后 - 如果您需要停止执行 - 请致电 Response.End( )。
其他提示
Response.StatusCode = 401;
Response.End();
我想我还是更喜欢:
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
方法。
另外一条评论。
如果页面的一部分已经写入输出缓冲区,则清除所有缓冲内容或页面可能无法正确显示非常重要。
这很可能是在模板化的环境中。例如母版页......
Response.ClearContent();
Response.StatusCode = 401;
Response.End();
不隶属于 StackOverflow