2011-04-25 41 views
0

我們可能永遠不知道爲什麼微軟決定通過將HealthVault應用程序限制爲HealthVault應用程序的單個web/app.config條目來限制開發人員。但是,我需要能夠在一個ASP.NET網站上創建2個(或更多)HealthVault ApplicationID的工作?我正在尋找一種有效而可靠的方法來做到這一點。如何讓HealthVault在同一應用程序中使用多個ApplicationID

我不會深入探討兩種不同HealthVault應用程序背後的推理細節,但不是說我們需要它的工作。我仍然無法使用MSDN論壇正確登錄(認爲無限重定向登錄循環),所以我希望能在這裏找到一篇能夠幫助我的帖子。

我確實聯繫過HealthVault開發人員,但是開發人員給出了一個建議,我不相信會是可靠的(如果我錯了,請告訴我)。

開發人員的建議是,在做代碼以下時,需要連接到的HealthVault,但連接之前:

ConfigurationSettings.AppSettings [「的applicationID」] =「[應用ID]」;

問題是這是一個靜態屬性,我認爲這是一個問題,因爲我們的Web應用程序將有不同的用戶同時訪問兩個HealthVault應用程序。 有沒有人有任何建議,使2(或更多)HealthVault ApplicationID的工作與一個ASP.NET網站?我正在尋找一種有效而可靠的方法來做到這一點。

回答

0

有一種方法可以在運行時動態切換應用程序ID。這兩個應用程序都必須創建,兩個證書都必須安裝。幾件事情要記住。對於每個經過身份驗證的連接,用戶都將被授予令牌(又名wctoken)。

當您的用戶使用Live ID重定向回來時(如果使用live id,...),您的redirect.aspx頁面(假設您的重定向頁面繼承自HealthServiceActionPage


這意味着您每次切換應用程序,您必須重定向用戶返回到新的應用程序ID Live ID的接收新令牌

下面是代碼示例,可以由用戶動態地更改設置:

public class ConfigurationManager : HealthWebApplicationConfiguration 
{ 
    private string appid; 
    public ConfigurationManager(string appid) 
    { 
     this.appid = appid; 
    } 
    public override Guid ApplicationId 
    { 
     get 
     { 
      return AppManager.Current.GetCurrentAppId(this.appid); 
     } 
    } 
} 

public class AppManager 
{ 
    private static readonly Object lck = new Object(); 

    public Guid? App; 

    public static AppManager Current 
    { 
     get 
     { 
      AppManager mgr = null; 

      if (_current == null) 
      { 
       lock (lck) 
       { 
        mgr = new AppManager(); 
       } 
      } 

      return mgr; 
     } 
    } 

    private static AppManager _current; 

    public Guid GetCurrentAppId(string id) 
    { 
     return new Guid(id); 
    } 
} 

用法:

ConfigurationManager cm = new ConfigurationManager(your-app-id-here); 
HealthWebApplicationConfiguration.Current = cm; 
+0

謝謝!爲信息。希望我能找到一些時間來切換回來。我們只是決定只使用1個HV應用程序,並保留第2個HV應用程序,直到它被修復。 – thames 2011-10-27 05:59:11

相關問題