我在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,并且已经从网站的其他部分正确禁止,但它从不会自动重定向到“帮助”页面。
答案 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管道。猜测移动错误并帮助进入网站的根目录,它应该工作