Приложение Silverlight RIA с использованием сервисов с другого сайта - PullRequest
1 голос
/ 24 марта 2011

У меня есть приложение Silverlight, которое использует как службу домена аутентификации RIA, так и службу домена объекта RIA.Приложение работает должным образом при запуске в стандартном сценарии развертывания, когда службы RIA используются с того же веб-сайта ASP.Net, с которого загружено приложение Sivlerlight.

Чтобы сделать развертывание более гибким, я бынравится использовать отдельные веб-приложения для размещения служб RIA и для размещения приложения Silverlight.Мне удалось заставить службы RIA работать на отдельном сайте, и я обновил свое приложение Silverlight, чтобы оно им указывало.Проблема в том, что аутентификация нарушается.Я посмотрел на запросы RIA в fiddler, и cookie-файлы аутентификации кажутся правильными.

Кто-нибудь сумел развернуть приложение RIA Silverlight с сервисами RIA, размещенными на веб-сайте, отличном от того, что приложение Silverlightскачано с?

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

В конце концов, единственное различие, которое я использовал fiddler, чтобы посмотреть на разницу в запросах, которые работали для собственной службы RIA и внешней, и единственное отличие было заголовком реферера HTTP. Может показаться странным, что атрибут RIA requireAuthentication учитывает заголовок реферера, поэтому, возможно, это что-то совсем другое.

Мне удалось найти способ объединить мой домен и службы аутентификации в один и позволить разместить его в другом веб-приложении, что очень удобно. Подход заключался в том, чтобы поместить AuthenticationDomainService в службу основного домена. Он не позволяет использовать тот же шаблон использования на клиенте, аутентификация является операцией загрузки объекта, но все же упрощает использование поставщика членства ASP.Net для аутентификации.

[EnableClientAccess]
public class MyDomainService : LinqToEntitiesDomainService<MyEntities>, IAuthentication<User>
{
    public class AuthenticationDomainService : AuthenticationBase<User>
    { }

    private AuthenticationDomainService m_authService = new AuthenticationDomainService();

    public User Login(string username, string password, bool isPersistent, string customData)
    {
        return m_authService.Login(username, password, isPersistent, customData);
    }

    ....
0 голосов
/ 24 марта 2011

Редактировать: это вам тоже не поможет.

http://msdn.microsoft.com/en-us/library/ee707359%28v=vs.91%29.aspx

Класс контекста домена содержит три конструктора:

  1. Конструктор по умолчанию, который встраивает URI, необходимый для связи со службой домена через http, используя класс WebDomainClient.

  2. Конструктор, который позволяет клиенту указывать альтернативный URI.

  3. Конструктор, который позволяет клиенту предоставлять пользовательскую реализацию DomainClient (обычно используется для модульного тестирования или перенаправления на пользовательский транспортный уровень).

...