我正在使用ASP.NET MVC开发一个Web应用程序,部署到IIS 7.我已经使用这些目录中的web.config文件隐藏了我的文件和视图目录(它们只返回正常的404)。
但是,我无法让web.config方法隐藏我的bin目录。当我访问www.mywebapp.com/bin时,我反而得到了一个过于透露的页面:
HTTP错误404.8 - 未找到
在 请求过滤模块已配置 拒绝URL中的路径 包含hiddenSegment部分。
该页面显示了我的目录结构的一部分。我只是希望它像文件和视图目录那样返回我的404页面。我怎么能得到这种行为?
答案 0 :(得分:1)
更好的选择是使用相同的,更加用户友好的错误页面处理404和404.8错误,而不会泄露精确的错误代码。您可能也希望以相同的方式处理403错误(可能还有其他SO用户会建议的其他错误)。
为此,您需要使用< customErrors /> web.config中的元素。
答案 1 :(得分:1)
我能够通过在〜/ Files目录中添加一个小的web.config文件来解决这个问题,该文件拒绝所有通过Web进行探索的尝试。 web.config与ASP.NET MVC默认放置在Views目录中非常相似:
<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
</handlers>
</system.webServer>
</configuration>
答案 2 :(得分:0)
我已经在我的global.asax中处理了路径问题的错误处理。然后我检查错误是什么,在你的情况下是404,如果它是404,我将它们重定向到/ Home / Index。
如果是另一个错误,我会直接到我的错误控制器并在那里处理错误。
我希望这会对你有所帮助。如果你想要代码,请告诉我。