2017-02-09 104 views
0

在我的應用程序中,我有自己的API將內容保存在不同的存儲庫中。其中之一是Sensenet。Sensenet:使用Sensenet客戶端API初始化客戶端內容

我使用客戶端API來存儲Sensenet的內容,但我有一個問題,當我初始化客戶端背景:

ClientContext.Initialize(new[] 
      { 
       new ServerContext 
       { 
        Url = siteUrl, 
        Username = userName, 
        Password = userPassword 
       } 
      }); 

當我開始我的應用程序,在方法上初始化第一次調用好吧,但在第二個電話等等,它啓動一個例外...

我相信該解決方案可以通過使用ClientContext.Current ...但我不知道我應該如何實現它...

回答

1

客戶端上下文的初始化方法應稱爲每個應用程序域只有一次。這就是爲什麼你在第二次電話會遇到異常。

就你的情況而言(當你從另一個web應用程序調用Sense/Net時),你應該只在應用程序啓動過程的某個地方調用它。作爲一個不同的例子:從命令行工具它應該在Main方法中的某個地方被調用。

Initialize方法目前沒有太多工作,只是存儲提供的服務器信息。例如,如果您想從導入器工具中的單個管理員用戶調用Sense/Net,那麼這很有用,這樣您就不必在每次調用時都提供用戶憑據。

但是,如果您想用不同的用戶憑據(爲了使用Sense/Net的權限系統)調用方法,您可以簡單地提供每次調用的服務器信息。例如:

var server = new ServerContext 
{ 
    Url = "http://example.com", 
    Username = "johnsmith", 
    Password = "password" 
}; 

// see the server parameter here! 
var content = await Content.LoadAsync(1234, server); 
content["MyField"] = "value"; 

// no server parameter, we already know it 
await content.SaveAsync();