如何在IIS6中使用EmbeddedResourceVirtualPathPovider

时间:2013-03-13 16:22:42

标签: asp.net-mvc-4 iis-6 virtualpathprovider

使用VSV10开发ASP.NET MVC4 Web应用程序时,使用Mvc.JQuery.Datatables Nuget, 我发现引用的EmbeddedResourceVirtualPathProvider NuGet运行得很漂亮 在我的开发盒上,但在我的生产盒上惨遭失败。

生产框是Windows 2003,安装了IIS6和.NET 4.0。

我搜索了很多关于SO和谷歌搜索的内容,但在实施建议的解决方法后, 它仍然失败:

这就是我所做的。

  1. https://stackoverflow.com/a/5178993
  2. 的建议实施AppInitialize
  3. 根据http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx
  4. 的建议实施ASP.NET的通配符映射
  5. 根据https://stackoverflow.com/a/3144841
  6. 的建议为静态文件实施IgnoreRoute

    但它仍然没有提供所有文件。我获得了嵌入式部分视图,但没有 嵌入的css,js和jpg文件。

    我的web.config有一个StaticFileHandler的条目,如下所示:

    <system.webServer>
      <handlers>
        <add path="*.css" verb="GET" name="Static css" type="System.Web.StaticFileHandler" />
        <add path="*.js" verb="GET" name="Static js" type="System.Web.StaticFileHandler" />
        <add path="*.jpg" verb="GET" name="Static jpg" type="System.Web.StaticFileHandler" />
        <add path="*.gif" verb="GET" name="Static gif" type="System.Web.StaticFileHandler" />
      </handlers>
    </system.WebServer>
    

    我似乎错过了一些关键的东西。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用IIS6时,#1-3中列出的所有项目都是必需的,但您还需要 认识到IIS6在httpHandlers部分中将其处理程序定义为system.web, 而IIS7称它们为handlers,它们位于配置文件的system.webServer部分。

因此,您需要添加以下内容才能使其在IIS6中正常工作

<system.web>
  ....
  <httpHandlers>
    <add path="*.css" verb="GET" type="System.Web.StaticFileHandler" />
    <add path="*.js" verb="GET" type="System.Web.StaticFileHandler" />
    <add path="*.jpg" verb="GET" type="System.Web.StaticFileHandler" />
    <add path="*.gif" verb="GET" type="System.Web.StaticFileHandler" />
  </httpHandlers>
</system.web>