Как использовать IsolatedStorageFile.GetUserStoreForApplication () - PullRequest
0 голосов
/ 21 октября 2018

У меня есть приложение clickonce, и оно отлично работает на производстве, с методом:

IsolatedStorageFile.GetUserStoreForApplication()

, который успешно выполняется.Когда я пытаюсь отладить мое приложение, происходит сбой при возникновении исключения IsolatedStorageException из-за того, что «идентификация приложения вызывающего не может быть определена ..» , как описано здесь

Все сборки, связанные с приложениемиспользуйте тот же изолированный магазин при использовании этого метода.Этот метод можно использовать только тогда, когда можно определить личность приложения - например, когда приложение опубликовано в развертывании ClickOnce или является приложением на основе Silverlight.Если вы попытаетесь использовать этот метод вне приложения на основе ClickOnce или Silverlight, вы получите исключение IsolatedStorageException, поскольку невозможно определить личность вызывающего приложения.

Мой вопрос заключается в том, как использовать IsolatedStorageFile.GetUserStoreForApplication () и отлаживать приложение без исключений?

  • Возможно, выполнить некоторые проверки?
  • или использовать пользовательское приложениеidentity?
  • или используйте IsolatedStorageFile.GetEnumerator для получения доступных магазинов?

1 Ответ

0 голосов
/ 23 октября 2018

Проверьте, не задан ли вначале контекст активации,

public IsolatedStorageFile getIsolatedStorage() {
    return AppDomain.CurrentDomain.ActivationContext == null
        ? IsolatedStorageFile.GetUserStoreForAssembly()
        : IsolatedStorageFile.GetUserStoreForApplication();
}

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

Я также виделдругая реализация

Ссылка ClickOnce и IsolatedStorage

, где они проверили System.Deployment.Application.ApplicationDeployment.IsNetwor‌​kDeployed, чтобы определить, было ли приложение в данный момент нажатым после развертывания

public IsolatedStorageFile getIsolatedStorage() {
    return System.Deployment.Application.ApplicationDeployment.IsNetwor‌​kDeployed
        ? IsolatedStorageFile.GetUserStoreForApplication()
        : IsolatedStorageFile.GetUserStoreForAssembly();
}

В идеалеЯ бы также предложил инкапсулировать IsolatedStorage за абстракцией, чтобы модульное тестирование также можно было проводить изолированно, без влияния на эффекты.

...