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

时间:2009-06-16 16:11:19

标签: 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="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,并且已经从网站的其他部分正确禁止,但它从不会自动重定向到“帮助”页面。

2 个答案:

答案 0 :(得分:1)

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

你需要这样的东西:

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

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

答案 1 :(得分:0)

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

相关问题