我在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/controllers或http://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>