Asp.net mvc 无法让ASP.NET MVC应用重定向到未经授权用户的错误页面

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

我在ASP.NET MVC应用程序的web.config中设置了以下内容:

<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。