如何在ASP.NET页面中以编程方式生成401错误

时间:2008-10-20 06:53:08

标签: c# asp.net iis asp.net-2.0

正如您所看到的,这是来自非Web开发人员的问题。我想有一个ASPX页面,在某些情况下,可以从代码生成401错误。理想情况下,它会显示IIS标准页面。

5 个答案:

答案 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)

根据MSDN,您应该可以使用以下内容。

Throw New HttpException(401, "Auth Failed")

修改看到其他回复设置后,状态代码会更合适。

答案 4 :(得分:10)

另外一条评论。

如果页面的一部分已经写入输出缓冲区,则清除所有缓冲内容或页面可能无法正确显示非常重要。

这很可能是在模板化的环境中。例如母版页......

Response.ClearContent();
Response.StatusCode = 401;
Response.End();