我有一个嵌入在程序集中的母版页,并通过虚拟路径提供程序提供服务。 (/_v/name.space.myMaster.master)
对主服务器的更改未反映在Web应用程序中,并且在此特定情况下,我得到与缺少ContentPlaceHolder相关的错误。我纠正了错误(ruant =“server”而不是runat =“server”)然而,我仍然得到错误。
我已将.master作为允许的扩展名,并确认通过VPP提供的文件与程序集中嵌入的文件不同(我通过Reflector检查了程序集)。
我已经在VS中完成了清理/重新构建,并且已经在64个/非64个版本中修改了我的“Temporary ASP.NET Files”文件夹。我还需要做些什么来强制从母版页的非缓存版本重新编译吗?
答案 0 :(得分:1)
在VirtualPathProvider类中,您可以覆盖方法GetCacheDependency以指定监视文件的依赖项。
public override CacheDependency GetCacheDependency(string virtualPath,
System.Collections.IEnumerable virtualPathDependencies,
DateTime utcStart)
// Get the physical path to the assembly
return new CacheDependency(path_to_assembly);
}
ASP.NET将使用此dependency来缓存对象。由于依赖项跟踪物理文件,因此只要该文件发生更改,ASP.NET就会从缓存中删除该对象。
答案 1 :(得分:0)
程序集虽然GAC并没有从Web应用程序的bin文件夹中删除,尽管在VS中运行了该项目的干净。
从bin中删除程序集的副本解决了这个问题。