我正在使用asp.net 3.5 web.config来限制访问,而且效果很好。
<authentication mode="Windows">
<authorization>
<allow users="Bill, John"/>
<deny users="*"/>
</authorization>
系统错误消息将阻止未经授权(但已通过身份验证)的用户:
Server Error in '/' Application
Access is denied.
Description: An error occurred while .......
Error message 401.2: Unauthorized: Logon failed due to server configuration ...
为了使消息更友好,我取消注释customErrors标志并在项目的根路径中创建GenericErrorPage.htm。
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
然而,它只是不起作用。我仍然收到系统错误消息而不是我的自定义错误页面。
任何建议都将受到赞赏。
答案 0 :(得分:10)
您将看不到它 - 自定义错误页面由ASP.NET应用程序提供,但Windows身份验证由IIS本身提供。
现在您可以将IIS设置为使用不同的错误页面。对于IIS7,这需要separate configuration section;
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto">
<error statusCode="403"
subStatusCode="-1"
prefixLanguageFilePath=""
path="C:\inetpub\wwwroot\errors\403.htm"
responseMode="File" />
</httpErrors>
</system.webServer>
您需要确保应用程序池用户可以访问该路径。
答案 1 :(得分:4)
在其他情况下没有对此进行测试,但是查看了detailed article针对类似问题的一些建议。
另一个问题原来是:
授权要求阻止了对错误页面的访问。
解决方案是在web.config中使用 属性。请参阅链接以获取更详细的说明,但这里是一个片段:
<!-- in the same root web config file-->
<configuration>
<system.web>
<authorization>
<allow users="Bill, John"/>
<deny users="?" />
</authorization>
</system.web>
<!-- the page specific authorization-->
<location path="GenericErrorPage.htm"> <!-- other ones for your other pages-->
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
答案 2 :(得分:-1)
改变:
<customErrors mode="RemoteOnly" />
mode属性可以是以下之一:
* On – error details are not shown to anybody, even local users. If you specified a custom error page it will be always used.
* Off – everyone will see error details, both local and remote users. If you specified a custom error page it will NOT be used.
* RemoteOnly – local users will see detailed error pages with a stack trace and compilation details, while remote users with be presented with a concise page notifying them that an error occurred. If a custom error page is available, it will be shown to the remote users only.
向访问者显示一个简洁但不那么漂亮的错误页面仍然不够好,所以你需要整理一个自定义错误页面并以这种方式指定:
<customErrors
mode="RemoteOnly"
defaultRedirect="~/errors/GeneralError.aspx"
/>