注册VirtualPathProvider时,您仍然希望以前的VPP能够正常工作。我已经通过两种方式看到了这一点:一种是使用base
(例如,if base.FileExists(virtualPath)
)而另一种是使用Previous
(例如if Previous.FileExists(virtualPath)
)。这些之间有什么区别,并且优先于另一个?
答案 0 :(得分:0)
看起来,当您使用VirtualPathProvider
注册HostingEnvironment
时,它会向VirtualPathProvider
的{{1}}方法提供当前Initialize
。此初始化方法将提供的VPP保存到字段VirtualPathProvider
。
基类_previous
提供的虚拟方法以下列方式使用VirtualPathProvider
:
_previous
每个方法检查以确保public virtual bool FileExists(string virtualPath)
{
return this._previous != null && this._previous.FileExists(virtualPath);
}
被估值,然后提供相关的响应。调用_previous
似乎比调用base
更安全,因为Previous
将为您执行所有base
检查。