Как заставить HealthVault работать с несколькими ApplicationID в одном приложении - PullRequest
0 голосов
/ 25 апреля 2011

Мы никогда не узнаем, почему Microsoft решила ограничить разработчиков, ограничив приложения HealthVault одной записью web / app.config для приложения HealthVault.Однако мне нужно, чтобы 2 (или более) HealthVault ApplicationID работали с одним веб-сайтом ASP.NET?Я ищу эффективный и надежный способ сделать это.

Я не буду вдаваться в подробности обоснования двух разных приложений HealthVault, но скажу только, что нам нужно, чтобы оно работало.Я все еще не могу правильно войти в систему с форумов MSDN (думаю, что бесконечный знак перенаправления зацикливается), поэтому я надеюсь получить здесь пост, который поможет мне.

Я действительно связывался с разработчиком HealthVault, как этого добиться, однако разработчик далпредложение, которое я не верю, будет надежным (если я ошибаюсь, дайте мне знать).

Предложение разработчика заключалось в том, чтобы сделать следующее в коде, когда вам нужно было подключиться к HealthVault, но до подключения:

ConfigurationSettings.AppSettings [«ApplicationId»] = «[ID вашего приложения]»;

Проблема в том, что это статическое свойство, и я рассматриваю это как проблему нашего веб-сайтаПриложение будет иметь разных пользователей, одновременно получающих доступ к обоим приложениям HealthVault.Есть ли у кого-нибудь предложения, чтобы 2 (или более) HealthVault ApplicationID работали с одним веб-сайтом ASP.NET?Я ищу эффективный и надежный способ сделать это.

1 Ответ

0 голосов
/ 27 октября 2011

Существует способ динамического переключения идентификаторов приложений во время выполнения.Оба приложения должны быть созданы, оба сертификата должны быть установлены.Несколько вещей, чтобы иметь в виду.Для каждого аутентифицированного соединения пользователю будет предоставлен токен (он же wctoken).Этот токен используется, когда пользователь перенаправляется обратно из Live ID (в случае, если используется live id ...) вашей страницей redirect.aspx (при условии, что ваша страница перенаправления наследуется от HealthServiceActionPage .Это означает, что каждый раз, когда вы переключаете приложения, вы должны перенаправлять пользователя обратно в 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;
...