我在Windows 7上运行IIS 7.5。我的ASP .NET应用程序使用VirtualPathProvider。我的VirtualPathProvider返回并渲染了大多数文件(aspx页面)。静态文件(css / images)不是。如果我尝试直接浏览它们(或者如果它们被我的虚拟aspx页面引用),它们会产生HTTP 404错误。
我已经验证了我的web.config具有为静态文件类型注册的正确处理程序。
这有多奇怪:
如果我尝试浏览非虚拟gif文件(实际存在于网站根目录下的文件系统中的文件),则呈现正常。
如果我在Visual Studio中使用WebDev而不是IIS运行,则虚拟gif文件可以正常呈现。
在调试模式下,在VirtualPathProvider.GetFile
中,我可以看到我的VirtualPathProvider在页面返回404错误之前返回一个完全有效的虚拟gif文件实例...所以我知道我的VirtualPathProvider工作正常很好。
注意,当我说IIS时,我并不是说在部署环境中。我的意思是将项目设置切换为使用IIS而不是WebDev。
有什么想法吗?
感谢。
答案 0 :(得分:11)
...和answer:
我遇到的问题,尤其是路由显示,即使使用ASP.NET的通配符映射,我的静态文件最终会出现404错误代码,因为路由正在捕获它们,发送请求到MVC处理程序,没有找到路由。失败。
所以,作为对我自己(以及其他任何做类似事情的人)的说明,我发现你需要做的就是让你的VPP提供静态文件。
首先,您需要获取映射到ASP.NET的所需静态文件类型 ...