正如您所看到的,这是来自非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 方法。

根据 MSDN

Throw New HttpException(401, "Auth Failed")

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

另外一条评论。

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

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

Response.ClearContent();
Response.StatusCode = 401;
Response.End();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top