asp.net-mvc-2 – 如何防止IIS7处理HTTP状态码401?
发布时间:2020-12-15 22:55:08 所属栏目:asp.Net 来源:网络整理
导读:我正在使用我的ASP.NET MVC 2项目.我创建异常过滤器来捕获用户没有权限查看某些操作时发生的未经授权的访问异常. [CustomError(typeof(UnauthorizedAccessException),"Error","UnauthorizedAccess")]public class MyController : BaseController{} 抛出异常
我正在使用我的ASP.NET MVC 2项目.我创建异常过滤器来捕获用户没有权限查看某些操作时发生的未经授权的访问异常.
[CustomError(typeof(UnauthorizedAccessException),"Error","UnauthorizedAccess")] public class MyController : BaseController { } 抛出异常之后,我的过滤器将转移到以下方法的配置控制器/操作. public ActionResult UnauthorizedAccess(ExceptionContext context) { Response.StatusCode = CustomHttpStatusCode.UnauthorizedUser; return View(model); } 最后,在ASP.NET应用程序结束此请求之前,将调用位于Global.ascx中的以下方法将自定义HTTP状态代码更改为HTTP状态401(未经授权的访问). public void Application_EndRequest(object sender,EventArgs e) { if (Response.StatusCode == CustomHttpStatusCode.UnauthorizedUser) { Response.StatusCode = 401; } } 一切都在我的机器上工作正常(IIS 7.5).但它在我的部署网站上不起作用.它仍然返回纯文本“您没有权限查看此目录或页面”.而不是我的自定义错误页面. PS.以下配置是我当前这个case的web.config. <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.web> <customErrors mode="On"></customErrors> </system.web> <system.webServer> <httpErrors errorMode="Custom"> <remove statusCode="502" subStatusCode="-1" /> <remove statusCode="501" subStatusCode="-1" /> <remove statusCode="500" subStatusCode="-1" /> <remove statusCode="412" subStatusCode="-1" /> <remove statusCode="406" subStatusCode="-1" /> <remove statusCode="405" subStatusCode="-1" /> <remove statusCode="404" subStatusCode="-1" /> <remove statusCode="403" subStatusCode="-1" /> <remove statusCode="401" subStatusCode="-1" /> </httpErrors> </system.webServer> </configuration> 解决方法
我刚刚找到了解决这个问题的方便.我只是添加新的设置到web.config文件,如下面的代码.一切都在我的部署网站上运行正常.
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <httpErrors errorMode="Custom" existingResponse="PassThrough"> <remove statusCode="502" subStatusCode="-1" /> <remove statusCode="501" subStatusCode="-1" /> <remove statusCode="500" subStatusCode="-1" /> <remove statusCode="412" subStatusCode="-1" /> <remove statusCode="406" subStatusCode="-1" /> <remove statusCode="405" subStatusCode="-1" /> <remove statusCode="404" subStatusCode="-1" /> <remove statusCode="403" subStatusCode="-1" /> <remove statusCode="401" subStatusCode="-1" /> </httpErrors> </system.webServer> </configuration> 所以我可以在纯文本和JSON响应中创建自定义错误页面. 欲了解更多信息:HttpErrorsSection Class PS.但是我在IIS管理器的“错误页面”功能中找不到existingResponse属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – IoC Castle Windsor – 没有为此对象定义的
- .net – 任何具有Postsharp生产经验的人?
- asp.net-mvc – Ninject mvc3无法从程序集加载WebActivator
- asp.net – 如何发布站点从命令行与一些发布配置文件?
- asp.net-mvc-3 – ASP.NET MVC 3将无法识别.cshtml视图文件
- asp.net-mvc – asp fontawesome 404(未找到)
- asp.net – 如何使用Visual Studio的内置SQL服务器?
- 按月分组的ASP.NET组数据
- asp.net – 未在生产服务器中的WCF调用上传递凭据
- asp.net-mvc – 嵌套的MVC母版页