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

我在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服务器的管理员联系以获取其他帮助 .

我究竟做错了什么?

UPDATE: 现在我的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,并且已从网站的其他部分正确禁止,但它从不会自动重定向到“帮助”页面 .

回答(2)

3 years ago

您必须明确地将其他组的访问权限授予Error.aspx和/或Help.aspx,以便他们可以实际访问这些页面 . 您现在设置的方式,只有MySecurityGroup用户可以访问这些页面 .

你需要这样的东西:

<location path="Error.aspx">
 <system.web>
   <authorization>
    <allow users="*"/>
   </authorization>
 </system.web>
</location>

和Help.aspx一样 . 或者,您可以在文件夹级别执行此操作 .

3 years ago

你想要mvc或asp.net处理的错误和帮助页面吗?目前你正在处理像mvc视图这样的页面,但你有重定向的URL映射到asp.net管道 . 猜测移动错误并帮助进入网站的根目录,它应该工作