Det*_*eln 34 c# asp.net iis asp.net-2.0
正如您所看到的,这是来自非Web开发人员的问题.我想有一个ASPX页面,在某些情况下,可以从代码生成401错误.理想情况下,它会显示IIS标准页面.
Mar*_*ade 57
Response.StatusCode = 401;
Response.End();
Run Code Online (Sandbox Code Playgroud)
Bri*_*son 44
我想我还是喜欢:
throw new HttpException(401, "Auth Failed")
Run Code Online (Sandbox Code Playgroud)
我认为该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>
Run Code Online (Sandbox Code Playgroud)
抛出新异常肯定会触发自定义错误.
此外,您可能正在使用应用程序范围的错误日志记录工具,如ELMAH或其他东西,我不认为该Response.StatusCode方法也会记录在那里.
注意:我现在看到问题说,理想情况下,应该显示标准的IIS错误页面.显然,不需要自定义错误页面.Response.StatusCode在那种情况下我会使用这种方法.
Mit*_*ers 12
根据MSDN,您应该能够使用以下内容.
Throw New HttpException(401, "Auth Failed")
Run Code Online (Sandbox Code Playgroud)
编辑看到其他响应后,设置状态代码会更合适.
Ant*_*yVO 10
另外一条评论.
如果页面的一部分已经写入输出缓冲区,则清除任何缓冲的内容或页面可能无法正确显示非常重要.
这很可能是在模板化的环境中.例如母版页......
Response.ClearContent();
Response.StatusCode = 401;
Response.End();
Run Code Online (Sandbox Code Playgroud)