8

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

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

奇怪的是:

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

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

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

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

有任何想法吗?

谢谢。

4

1 回答 1

11

...并回答

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

因此,作为对我自己(以及其他任何正在做类似事情的人)的说明,我发现您需要执行以下操作才能让您的 VPP 提供静态文件。

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

于 2011-08-09T17:17:37.927 回答