MVC 3不会从Areas子文件夹中提供内容文件

时间:2011-09-21 07:02:33

标签: asp.net-mvc-3 asp.net-mvc-3-areas

我有一个MVC3应用程序,有几个区域和一个可移植区域(使用MVCContrib)

通常,我将所有内容文件保存在〜/ Content和我的脚本下〜/ Scripts。

但是,我正在为我网站上的另一个服务构建一个相当复杂的webclient,我想在Area的文件夹结构下组织这些javascript和图像文件(很多图像文件和资源),看起来像这样,在〜下/地区/ Web客户端

  • 内容
    • CSS
    • 字体
    • 图像
    • JS​​
  • 控制器
  • 模型
  • 浏览

我有一个资源聚合器控制器(我的一个可移植区域),能够很好地访问CSS / JS文件夹以提供该内容。但是,CSS文件直接引用images / fonts文件夹,所有这些链接都显示为已损坏。我对路径进行了双重和三重检查,并确保一切正常,但我仍然遇到404错误。

据我所知,MVC3应该忽略路由,只要那里有静态文件。此外,据我所知,只有App_ *文件夹享有特殊保护。我错过了什么?如果我完全可以避免它,我宁可不要将我的图像和资源与我的主应用程序混合在一起。

例如:http://localhost/Areas/WebClient/Content/images/knownimage.png不起作用,但应该存在!

1 个答案:

答案 0 :(得分:17)

所以经过一段时间的睡眠,更重要的是,在离开这个问题之后,我记得MVC确实为你提供了直接下载视图的保护,这让我记住了Areas文件夹中所需的Web.config文件。果然,有一个httphandler基本上将所有请求发送到FileNotFound处理程序。

我所要做的就是将web.config文件放在我想要公开的内容文件夹中,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>  
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="BlockViewHandler" />     
    </handlers>
  </system.webServer>
</configuration>

问题解决了。