带有静态文件问题的ASP.NET VirtualPathProvider

时间:2011-08-07 19:23:41

标签: asp.net iis-7.5 virtualpathprovider

我在Windows 7上运行IIS 7.5。我的ASP .NET应用程序使用VirtualPathProvider。我的VirtualPathProvider返回并渲染了大多数文件(aspx页面)。静态文件(css / images)不是。如果我尝试直接浏览它们(或者如果它们被我的虚拟aspx页面引用),它们会产生HTTP 404错误。

我已经验证了我的web.config具有为静态文件类型注册的正确处理程序。

这有多奇怪:

  1. 如果我尝试浏览非虚拟gif文件(实际存在于网站根目录下的文件系统中的文件),则呈现正常。

  2. 如果我在Visual Studio中使用WebDev而不是IIS运行,则虚拟gif文件可以正常呈现。

  3. 在调试模式下,在VirtualPathProvider.GetFile中,我可以看到我的VirtualPathProvider在页面返回404错误之前返回一个完全有效的虚拟gif文件实例...所以我知道我的VirtualPathProvider工作正常很好。

  4. 注意,当我说IIS时,我并不是说在部署环境中。我的意思是将项目设置切换为使用IIS而不是WebDev。

    有什么想法吗?

    感谢。

1 个答案:

答案 0 :(得分:11)

...和answer

  

我遇到的问题,尤其是路由显示,即使使用ASP.NET的通配符映射,我的静态文件最终会出现404错误代码,因为路由正在捕获它们,发送请求到MVC处理程序,没有找到路由。失败。

     

所以,作为对我自己(以及其他任何做类似事情的人)的说明,我发现你需要做的就是让你的VPP提供静态文件。

     

首先,您需要获取映射到ASP.NET的所需静态文件类型 ...