2011-08-07 42 views
8

我运行IIS的Windows 7.我的ASP .NET应用程序7.5使用的VirtualPathProvider。大多数文件(aspx页面)都会被我的VirtualPathProvider返回并正常显示。静态文件(CSS /图像)不是。他们得到HTTP 404错误,如果我试图浏览到其直接(或如果他们通过我的虚拟aspx页面引用)ASP.NET的VirtualPathProvider用静态文件文档

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

什么奇怪的是这样的:

  1. 如果我试图浏览到一个非虚拟GIF文件(一个实际的网站根目录下的文件系统上存在),它呈现的罚款。

  2. 如果我使用运行在Visual Studio中,而不是IIS Webdev的,虚拟GIF文件渲染罚款。

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

注意,当我说IIS时,我并不是指在部署环境中。我只是将项目设置切换到使用IIS而不是WebDev。

任何想法?

谢谢。

回答

11

...和answer

这个问题我已经遇到了一堆,特别是与路由显示出来,是,即使使用通配符映射到ASP.NET,我的静态文件落得一个404错误代码,因为路由赶上他们,发送请求到MVC处理程序,没有路由被发现。失败。

所以,作为一个纸条给我(和其他人谁在做类似的东西),这里就是我发现,你需要做的就是你VPP提供静态文件。

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

+1

啊,你救了我头疼!伟大的文章,伟大的发现。 – lukiffer

+0

这个节省了我几个小时的工作。感谢分享! – amaters

+0

这篇文章节省了数小时!谢谢! –