1
votes

I have a Silverlight application that uses both a RIA authentication domain service and a RIA entity domain service. The application works properly when run in a standard deployment scenario where the RIA services are consumed from the same ASP.Net web site that the Sivlerlight app is downloaded from.

In order to make my deployments more flexible I'd like to use separate web applications for hosting the RIA services and to host the Silverlight application. I've managed to get the RIA services working in a separate site and updated my Silverlight application to point to them. The problem is the authentication seems to break. I've looked at the RIA requests in fiddler and the authentication cookies are seemingly correct.

Has anyone managed to deploy a Silverlight RIA application with the RIA services hosted on a web site different to the one the Silverlight app is downloaded from?

2
Not sure this applies to separate web projects. blogs.victorero.com/2010/04/20/…Derek Beattie
It doesn't apply. I've got my RIA service classes available in the Silverlight client.sipsorcery

2 Answers

0
votes

Edit: this won't help you either.

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

The domain context class contains three constructors:

  1. A default constructor that embeds the URI necessary to communicate with the domain service over http using a WebDomainClient class.

  2. A constructor that permits the client to specify an alternate URI.

  3. A constructor that permits the client to provide a custom DomainClient implementation (typically used for unit testing or redirection to a custom transport layer).

0
votes

In the end the only difference I used fiddler to look at the difference in the requests that were working for a self hosted RIA service and an external one and the only difference was the HTTP referrer header. It would seem strange that the RIA RequiresAuthentication attribute takes the referrer header into account so perhaps it's something else entirely.

I was able to find a way to consolidate my domain and authentication services into a single one and allow it to be hosted on a different web app which is very handy. The approach was to put the AuthenticationDomainService into the main domain service. It doesn't allow the same usage pattern on the client, authentication is an entity load operation, but it does still make it easy to use an ASP.Net membership provider for authentication.

[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);
    }

    ....