ASP.NET MVC,自定义VirtualPathProvider和IIS6

时间:2010-08-19 09:11:54

标签: asp.net-mvc iis-6 virtualpathprovider

我已经实现了自己的VirtualPathProvider来加载“嵌入式”视图。

从Visual Studio运行时,这非常有效,但在IIS6上运行时,我收到了“未找到视图”消息。

web.config中是否有任何遗漏,或者是否还有其他问题?

我添加了一些日志记录,似乎即使我在Application_Start中注册Custom VirtualPathProvider,仍然使用System.Web.Hosting.MapPathBasedVirtualPathProvider。

2 个答案:

答案 0 :(得分:1)

对于Custom VPP + IIS6 +预编译站点的组合,我们需要从AppInitailize()中添加VPP;

public static class AppStart
{
    public static void
    {
    // code to be executed automatically by the framework
    }
}

另见:

http://sunali.com/2008/01/09/virtualpathprovider-in-precompiled-web-sites/

答案 1 :(得分:0)

你的根本没用过吗? VirtualPathProviders在堆栈中运行,因此,在VirtualPathProvider中,您应该注意到基类成员“Previous”实际上是“MapPathBasedVirtualPathProvider”的实例。

如果你:

  1. 将调试程序附加到IIS

  2. 在您的web.config中进行更改,然后将其更改回来,然后保存(以触发回收) - 同时仍然附加!

  3. 在FileExists中的VPP中放置一个断点

  4. 点击页面

  5. 你的VPP受到了打击吗?如果是这样,可能是在第一次请求之后,MVC ViewEngine缓存阻止您的VPP被其他请求命中的问题...