我在单个IIS网站下运行多个ASP.NET应用程序。
我不希望用户能够在这些应用程序中查看目录内容,并且IIS禁用了目录列表(我无法控制此列表,因为这取决于服务器管理员)。
如果用户尝试访问其中一个应用程序中的文件夹中的内容,我希望将该用户退回至应用程序根目录,以便可以为该应用程序加载默认页面,而不是显示令人讨厌的IIS错误页面。
例如,访问此URL:host/app1/subfolder/
会将用户反弹回host/app1
,而访问此其他URL:host/app2/subfolder1/subfolder2
会将用户反弹回host/app2
(我不会不想让用户跳到host
;必须跳到相应的应用首页)。
这具有挑战性,因为IIS似乎依赖扩展来路由ASP.NET URL,即使在IIS中此配置看起来像是分层的,也无法正常工作。例如,我尝试将其放在web.config中,IIS在配置页面上显示了它,但是在路由时似乎忽略了它:(httpErrors
进入system.webServer
)
<httpErrors>
<remove statusCode="403" subStatusCode="14" />
<error statusCode="403" subStatusCode="14" path="/app1" responseMode="ExecuteURL" />
</httpErrors>
有什么办法可以做到这一点?当然,如果我在IIS网站级别(而不是在应用程序级别)配置错误页面,则它会选择403.14自定义路由。这是一个错误还是我做错了什么?我不明白,如果IIS不遵守,为什么我可以在应用程序级别覆盖web.config中的403.14。
有什么提示吗?谢谢!