Silverlight 4, WCF RIA Services генерирует неполный код - PullRequest
3 голосов
/ 01 июля 2010
  • Я начал с шаблона бизнес-приложения Silverlight
    • Я назову это MyApp, а MyApp.Web
  • Я добавил новый проект приложения SL.
  • и добавили ссылку ria на существующий веб-проект.
    • Я назову этот Loader

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

  • Я удалил файлы App.xaml и App.xs из MyApp
  • Поскольку загрузчик теперь является приложением
    • , я скопировал соответствующуюкод из MyApp - App.cs для Loader - App.cs
    • Я добавил соответствующий код из MyApp - App.xaml в Loader - App.xaml
    • В основном это материал WebContext.

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

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

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

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

  • Loader

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

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

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

DomainContextType является нулевым или недействительным, и контексты, сгенерированные из AuthenticationBase<T>

, отсутствуют

1 Ответ

2 голосов
/ 06 апреля 2011

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

* 1004Короче говоря, проблема в том, что ваш 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>

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

...