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