0

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

这在从 Visual Studio 运行时效果很好,但在 IIS6 上运行时我收到“未找到视图”消息。

web.config 中是否缺少任何内容,或者是否还有其他问题?

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

4

2 回答 2

1

对于自定义 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/

于 2011-03-03T09:45:10.683 回答
0

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

如果你:

  1. 将调试器附加到 IIS

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

  3. 在 FileExists 的 VPP 中放置断点

  4. 点击页面

你的 VPP 被击中了吗?如果是这样,那么在第一个请求之后,MVC ViewEngine 缓存可能会阻止您的 VPP 因其他请求而受到打击......

于 2010-09-06T04:59:39.503 回答