Asp.net mvc 无法让ASP.NET MVC应用重定向到未经授权用户的错误页面
我在ASP.NET MVC应用程序的web.config中设置了以下内容:Asp.net mvc 无法让ASP.NET MVC应用重定向到未经授权用户的错误页面,asp.net-mvc,model-view-controller,error-handling,web-config,Asp.net Mvc,Model View Controller,Error Handling,Web Config,我在ASP.NET MVC应用程序的web.config中设置了以下内容: <authentication mode="Windows" /> <authorization> <allow roles="MySecurityGroup"/> <deny users="*"/> </authorization> <customErrors mode=&quo
<authentication mode="Windows" />
<authorization>
<allow roles="MySecurityGroup"/>
<deny users="*"/>
</authorization>
<customErrors mode="On" defaultRedirect="Error.aspx">
<error statusCode="401" redirect="Help.aspx"/>
</customErrors>
如果您在MySecurityGroup中,一切正常,但如果您不在,则不会重定向到Error.aspx或Help.aspx。(请注意,Error.aspx位于Views\Shared中,而Help.aspx位于Views\Home中。)您得到的只是默认错误:
“/”应用程序中出现服务器错误
访问被拒绝
描述:访问服务此请求所需的资源时出错。服务器可能未配置为访问请求的URL
错误消息401.2.:未经授权:由于服务器配置,登录失败。根据您提供的凭据和Web服务器上启用的身份验证方法,验证您是否具有查看此目录或页面的权限。请与Web服务器的管理员联系以获得其他帮助
我做错了什么
更新:现在我的web.config是这样设置的,但仍然不起作用:
<system.web>
<customErrors mode="On" defaultRedirect="Help.aspx">
</customErrors>
</system.web>
<location path="">
<system.web>
<authorization>
<allow roles="MySecurityGroup"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="Help">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
请注意,我可以很好地导航到MyApp/Help,并且被正确地禁止进入网站的其他部分,但它不会自动重定向到帮助页面。您必须明确授予其他组对Error.aspx和/或Help.aspx的访问权,以便他们能够真正访问这些页面。按照现在的设置方式,只有MySecurityGroup用户才能访问这些页面 您将需要以下内容:
<location path="Error.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Help.aspx也一样。或者,您可以在文件夹级别执行此操作。是否希望错误和帮助页面由mvc或asp.net处理?目前,您将页面视为mvc视图,但您有映射到asp.net管道的重定向URL。在猜测时,将错误和帮助移动到站点的根目录中,它应该可以工作是非常有意义的,但由于某些原因,这对我来说不起作用。我把这段代码放在原始部分结束之后,但是我没有得到任何不同的结果。为了简单起见,我甚至不担心Help.aspx,只担心Error.aspx。