如何让www.mywebapp.com/bin在ASP.NET MVC中返回404?

时间:2010-01-06 19:31:50

标签: asp.net-mvc iis-7

我正在使用ASP.NET MVC开发一个Web应用程序,部署到IIS 7.我已经使用这些目录中的web.config文件隐藏了我的文件和视图目录(它们只返回正常的404)。

但是,我无法让web.config方法隐藏我的bin目录。当我访问www.mywebapp.com/bin时,我反而得到了一个过于透露的页面:

  

HTTP错误404.8 - 未找到

     

在   请求过滤模块已配置   拒绝URL中的路径   包含hiddenSegment部分。

该页面显示了我的目录结构的一部分。我只是希望它像文件和视图目录那样返回我的404页面。我怎么能得到这种行为?

3 个答案:

答案 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。

如果是另一个错误,我会直接到我的错误控制器并在那里处理错误。

我希望这会对你有所帮助。如果你想要代码,请告诉我。