我正在尝试为SharePoint 2010/2013(服务器和基础)实现VirtualPathProvider。到目前为止,我已经实现了System.Web.Hosting.VirtualPathProvider
、System.Web.Hosting.VirtualFile
和System.Web.Hosting.VirtualDirectory
的子类。
我想使用FeatureReceiver
类的一个功能来向HostingEnvironment注册新的VPP。但自从我实现了
HostingEnvironment.RegisterVirtualPathProvider(new MyVPProvider());
在FeatureActivated
方法中,VisualStudio的调试部署失败,返回:
Error occurred in deployment step 'Activate Features': Operation is not valid due to the current state of the object.
我不知道自己做错了什么。也许FeatureReceiver
是注册VPP的错误位置?
我已经在网上搜索了教程或例子,但没有找到合适的。任何关于如何为SharePoint开发VirtualPathProvider的提示都将不胜感激!提前谢谢。
--
Robert Vogel
您需要编写一个IHttpModule实现来注册您的虚拟路径提供程序ones。也许这个链接可以帮助你:SharePoint 2007作为WCF主机-步骤#4,编写一个虚拟路径提供程序
using System.Web;
public class MyVirtualPathProviderRegisterModule : IHttpModule
{
static bool _Initialized = false;
static object _Lock = new object();
public void Init(HttpApplication app)
{
if (!_Initialized)
lock(_Lock)
if(!_Initialized)
{
HostingEnvironment.RegisterVirtualPathProvider(new MyVirtualPathProvider());
_Initialized = true;
}
}
public void Dispose() {}
}