ASP.NET虚拟路径提供程序与静态文件问题

8
我在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中,我可以看到my VirtualPathProvider返回一个完全有效的我的虚拟gif文件实例,就在页面返回404错误之前……因此我知道我的VirtualPathProvider工作得非常好。
请注意,当我说IIS时,我并没有指在部署环境中。我只是指在项目设置中切换为使用IIS而不是WebDev。
有什么想法吗?
谢谢。
1个回答

11

...和answer:

我经常遇到一个问题,尤其是在路由显示时,即使将通配符映射到ASP.NET,我的静态文件仍然会出现404错误代码,因为路由捕获它们,将请求发送到MVC处理程序,并且找不到任何路由。失败。

因此,作为对自己的提醒(以及任何正在执行类似操作的人),以下是我发现的使VPP提供静态文件所需做的内容。

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


1
哦,你为我省下了很多麻烦!这是一篇非常好的文章,发现得真棒。 - lukiffer
这篇文章节省了好几个小时的时间!谢谢! - Philipp P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接