当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在ASP.NET页面中以编程方式生成401错误》经验,为你挑选了5个好方法。

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



1> Mark Cidade..:
Response.StatusCode = 401;
Response.End();


我不知道为什么这会被拒绝 - 这与我的(已投票)答案几乎相同,仅仅是代码形式.当然,它没有*可能*有用的链接,但它仍然是一个非常好的答案......
它可能被拒绝了,因为它是在@jon之后提交的,所以它看起来像是一个背驮式的答案(虽然它们都是同时写的).感谢upvotes :)

2> Jon Skeet..:

设置Response.StatusCode然后 - 如果需要停止执行 - 调用Response.End().



3> Brian Fergus..:

我想我还是喜欢:

throw new HttpException(401, "Auth Failed")

我认为该Response.StatusCode方法不会触发web.config文件中定义的自定义错误,例如


     
     
     

抛出新异常肯定会触发自定义错误.

此外,您可能正在使用应用程序范围的错误日志记录工具,如ELMAH或其他东西,我不认为该Response.StatusCode方法也会记录在那里.

注意:我现在看到问题说,理想情况下,应该显示标准的IIS错误页面.显然,不需要自定义错误页面.Response.StatusCode在那种情况下我会使用这种方法.



4> Mitchel Sell..:

根据MSDN,您应该能够使用以下内容.

Throw New HttpException(401, "Auth Failed")

编辑看到其他响应后,设置状态代码会更合适.


我试过这个,当我在浏览器中检查http响应时,我得到了500(内部服务器错误)而不是401(未经授权)

5> AnthonyVO..:

另外一条评论.

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

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

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

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有