【问题标题】:Silverlight RIA application using services from different web siteSilverlight RIA 应用程序使用来自不同网站的服务
【发布时间】:2011-03-23 22:59:06
【问题描述】:

我有一个 Silverlight 应用程序,它同时使用 RIA 身份验证域服务和 RIA 实体域服务。该应用程序在标准部署方案中运行时可以正常工作,其中 RIA 服务是从下载 Sivlerlight 应用程序的同一个 ASP.Net 网站使用的。

为了使我的部署更加灵活,我想使用单独的 Web 应用程序来托管 RIA 服务并托管 Silverlight 应用程序。我设法让 RIA 服务在一个单独的站点中工作,并更新了我的 Silverlight 应用程序以指向它们。问题是身份验证似乎中断了。我查看了 fiddler 中的 RIA 请求,并且身份验证 cookie 似乎是正确的。

是否有人设法部署 Silverlight RIA 应用程序,并将 RIA 服务托管在与下载 Silverlight 应用程序的网站不同的网站上?

【问题讨论】:

标签: deployment silverlight-4.0 ria


【解决方案1】:

编辑:这也无济于事。

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

领域上下文类包含三个构造函数:

  1. 一个默认构造函数,它嵌入了使用 WebDomainClient 类通过 http 与域服务通信所需的 URI。

  2. 允许客户端指定备用 URI 的构造函数。

  3. 允许客户端提供自定义 DomainClient 实现的构造函数(通常用于单元测试或重定向到自定义传输层)。

【讨论】:

  • 是的,我正在使用允许我指定自定义 URI 的构造函数。我相信我的问题实际上是在服务端。由于某种原因,当我将实体域服务和身份验证域服务移出原始 Web 应用程序时,它们无法协同工作。
  • 在您将它们移动到的新 Web 应用程序上,您是否将 System.ServiceModel.DomainServices.Hosting、System.ServiceModel.DomainServices.Server 和 System.ServiceModel.DomainServices.EntityFramework 设置为 Copy Local True?
  • 没有。但是原始的网络应用程序也没有。我之前检查了两个 Web 应用程序上的 bin 目录中的这些程序集,但它们都没有。他们不应该需要它们,因为两个应用程序都在同一台机器上,并且程序集在 GAC 中。 RIA 服务确实可以在新的 Web 应用程序上运行,因为 Siverlight 客户端可以与他们通信,只是身份验证有些问题,我想知道是否有人设法做同样的事情。
【解决方案2】:

最后,唯一的区别是我使用 fiddler 来查看适用于自托管 RIA 服务和外部服务的请求的区别,唯一的区别是 HTTP 引用标头。 RIA RequiresAuthentication 属性将引用标头考虑在内似乎很奇怪,所以也许它完全是另外一回事。

我能够找到一种方法将我的域和身份验证服务整合为一个服务,并允许将其托管在非常方便的不同网络应用程序上。方法是将 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);
    }

    ....

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多