2013-07-17 78 views
2

我試圖爲SharePoint 2010/2013(服務器和基礎)實現VirtualPathProvider。到目前爲止,我已經實現了System.Web.Hosting.VirtualPathProvider,System.Web.Hosting.VirtualFileSystem.Web.Hosting.VirtualDirectory的子類。SharePoint - VirtualPathProvider:在FeatureReceiver中註冊

我想使用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的錯誤地方?

我已經在網上搜索了一個教程或例子,但是我沒有找到任何合適的。非常感謝有關如何開發VirtualPathProvider for SharePoint的任何提示!提前致謝。

-

羅伯特·沃格爾

+0

嗨羅伯特,你解決了這個問題?我試圖從數據層運行RazarViewEngine,但從數據庫而不是文件位置獲取文件。我得到這個錯誤。我很確定,因爲沒有託管環境,但是必須有辦法解決這個問題? – ppumkin

回答

0

你需要寫一個IHttpModule的實施,其登記的虛擬路徑提供那些。 也許這個鏈接可以幫助你:SharePoint 2007 as a WCF host - Step #4, Write a Virtual Path Provider

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() {} 
}