asp.net-mvc – MVC路由不处理我的一个目录

我在IIS 7.0中使用ASP.NET MVC.我通过Application_Error覆盖得到了404错误.

除了“控制器”,“模型”,“助手”等之外,我还有一个名为“文件”的目录,用于存储用户上传的文件.当我转到http://www.mysite.com/files时,我得到的是一个默认的IIS 403页面,它提供了太多的信息(例如服务器的确切目录结构),而不是“未找到”.

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

如果我尝试访问http://www.mysite.com/controllershttp://www.mysite.com/helpers,它们都是带有代码文件的现有目录,我得到一个404页面,这就是我想要的.我不希望用户知道我的目录结构.

为什么MVC不处理/ files目录?

最佳答案 我想出了这一个. Views目录返回正确的’404’页面的原因,但Files目录返回了太多信息ASP.NET’无权限’页面:Views目录中有一个禁止显示文件的web.config文件.它有下面的片段来阻止MVC提供服务目录.

我刚刚在我的Files目录中添加了一个类似的web.config文件,而MVC现在就像目录不存在一样,这正是我想要的.

    <httpHandlers>
      <add path="*" verb="*"
          type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
    </handlers>
  </system.webServer>
点赞