Silverlight: WebContext недоступен, исключение - сбой Visual Studio - PullRequest
1 голос
/ 02 сентября 2011

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

Программа отлично работает во время выполнения.Аутентификация и все.

Я получаю неприятную ошибку во время разработки, которая приводит к сбою как Visual Studio, так и смешивания.Смесь рухнет сразу же, когда я открою решение.Visual Studio будет зависать, когда я закрываю конкретный вид (страницу)По крайней мере, смесь дал мне журнал аварий после того, как.Ошибка связана с тем, что я установил экземпляр моей модели представления в качестве контекста данных представления в xaml, а не установил / внедрил его во время выполнения.

Поэтому при установке контекста представления модели во время выполнения конструктор модели представления называетсякогда представление загружается в конструктор.И когда представление закрыто, вызывается деструктор.Вот где я получаю исключение, которое дает сбой vs / blend.Итак, вот исключение:

System.InvalidOperationException: текущий экземпляр WebContext недоступен.Вы должны создать экземпляр WebContext и добавить его в Application.ApplicationLifetimeObjects в конструкторе приложения по умолчанию.в System.ServiceModel.DomainServices.Client.ApplicationServices.WebContextBase.get_Current () в MyClassLibrary.WebContext.get_Current () в MyShellProject.ShellViewModel.Finalize ()

*.мой конструктор приложений.И нет проблем во время выполнения.Только после того, как я добавил экземпляр моей модели представления как текстовый текст, я получаю сбой во время выполнения.

Так что в моем App.xaml у меня есть:

<Application.ApplicationLifetimeObjects>
        <MyClassLibrary:WebContext>
            <MyClassLibrary:WebContext.Authentication>
                <ApplicationServices:FormsAuthentication>
                    <ApplicationServices:FormsAuthentication.DomainContext>
                        <MyClassLibrary_Web:MyAuthenticationContext />
                    </ApplicationServices:FormsAuthentication.DomainContext>
                </ApplicationServices:FormsAuthentication>
            </MyClassLibrary:WebContext.Authentication>
        </MyClassLibrary:WebContext>
    </Application.ApplicationLifetimeObjects>

Я также попробовал код, стоящий заэквивалент этого в конструкторе приложения.Оба имеют один и тот же результат.

В этом блоге есть немного больше деталей о том, как настроен мой проект: http://avcode.wordpress.com/2010/08/25/authenticaion-prism-wcf-ria-services/

Кто-нибудь знает, почему во время разработки Visual Studioне знает, что я создал экземпляр WebContext?

1 Ответ

2 голосов
/ 21 января 2012

Допустим, у вас есть следующая переменная во ViewModel:

public bool IsDesignTime
{
  get
  {
    return DesignerProperties.GetIsInDesignMode(Application.Current.RootVisual);
  }
}

Вы можете обернуть фрагмент кода, который пытается создать экземпляр WebContext во время разработки, используя значение этой переменной и вместо этого вернуть объект Mocked. Я думаю, что WebContext создается, когда приложение работает и подключено, хотя не уверен. Поздний ответ, но может быть кому-то полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...