Silverlight 4, службы WCF RIA сгенерировали неполный код

  • I started with the Silverlight Business Application Template
    • I will call this MyApp and MyApp.Web
  • Я добавил новый проект приложения SL.
  • and added a ria link to the existing web project.
    • I will call this Loader

Это новое приложение SL является отправной точкой моего решения и в основном загружает главную страницу из другого файла xap. Проверяет наличие обновлений и т. Д.

  • Я удалил файлы App.xaml и App.xs из MyApp
  • Because Loader is now the Application
    • I copied the relevant code from MyApp - App.cs to Loader - App.cs
    • Я добавил соответствующий код из MyApp - App.xaml в Loader - App.xaml
    • В основном это материал WebContext.

Проблема в том, что сгенерированный код служб RIA для Loader не совпадает с кодом для MyApp.

Сгенерированный код для MyApp содержит следующие пространства имен:

  • MyApp
  • MyApp.Web
  • MyApp.Web.Models
  • MyApp.Web.Services

Сгенерированный код для Loader содержит пространство имен:

  • Загрузчик

Следующая строка кода в загрузчике - App.cs выдает InvalidOperationException.

WebContext.Current.Authentication.LoadUser(this.Application_UserLoaded, null);

Сообщение об ошибке для исключения:

DomainContextType имеет значение null или недействителен, и контексты не созданы из AuthenticationBase<T>


person cmaduro    schedule 01.07.2010    source источник


Ответы (1)


У меня была такая же проблема (с аналогичной настройкой) сегодня. Немного осмотревшись, я нашел этот пост на форумах silverlight, в котором ответ (решение ищите внизу, поскольку в RIA Services были внесены некоторые изменения API).

Короче говоря, проблема в том, что ваш WebContext не может найти DomainContext (в данном случае AuthenticationContext), который обрабатывает LoadUser в вашем случае. чтобы решить эту проблему, вам нужно добавить в свой App.xaml следующее:

<Application.ApplicationLifetimeObjects>
    <dmnsvc:WebContext>
        <dmnsvc:WebContext.Authentication>
            <appsvc:FormsAuthentication>
                <appsvc:FormsAuthentication.DomainContext>
                    <!--Your AuthenticationContext here-->
                </appsvc:FormsAuthentication.DomainContext>
            </appsvc:FormsAuthentication>
        </dmnsvc:WebContext.Authentication>
    </dmnsvc:WebContext>
</Application.ApplicationLifetimeObjects>

Надеюсь это поможет :)

person AbdouMoumen    schedule 06.04.2011