我已经实现了自己的VirtualPathProvider来加载“嵌入式”视图。
从Visual Studio运行时,这非常有效,但在IIS6上运行时,我收到了“未找到视图”消息。
web.config中是否有任何遗漏,或者是否还有其他问题?
我添加了一些日志记录,似乎即使我在Application_Start中注册Custom VirtualPathProvider,仍然使用System.Web.Hosting.MapPathBasedVirtualPathProvider。
答案 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”的实例。
如果你:
将调试程序附加到IIS
在您的web.config中进行更改,然后将其更改回来,然后保存(以触发回收) - 同时仍然附加!
在FileExists中的VPP中放置一个断点
点击页面
你的VPP受到了打击吗?如果是这样,可能是在第一次请求之后,MVC ViewEngine缓存阻止您的VPP被其他请求命中的问题...