2011-03-23 44 views
1

我有一個同時使用RIA身份驗證域服務和RIA實體域服務的Silverlight應用程序。該應用程序在標準部署方案中運行時正常運行,在該方案中,RIA服務是從與Sivlerlight應用程序相同的ASP.Net網站下載的。Silverlight RIA應用程序使用來自不同網站的服務

爲了讓我的部署更加靈活,我想使用單獨的Web應用程序來託管RIA服務並承載Silverlight應用程序。我設法讓RIA服務在單獨的網站上運行,並更新了我的Silverlight應用程序以指向它們。問題是認證似乎中斷。我已經看過RIA在fiddler中的請求,並且認證cookie看起來是正確的。

是否有人設法將Silverlight RIA應用程序部署在不同於從Silverlight應用程序下載的網站上託管的RIA服務?

+0

不確定這適用於單獨的Web項目。 http://www.blogs.victorero.com/2010/04/20/CreatingASilverlightApplicationWithAWCFRIAServicesClassLibrary.aspx – 2011-03-24 00:57:19

+0

它不適用。我已經在Silverlight客戶端中提供了我的RIA服務類。 – sipwiz 2011-03-24 01:04:24

回答

0

最後我用小提琴手來看看這是工作了自我要求的差異,唯一的區別託管RIA服務和外部之一,唯一的區別是HTTP引用頭。 RIA RequiresAuthentication屬性將引用標頭考慮進去似乎很奇怪,所以也許完全是另一回事。

我能夠找到一種方法將我的域和身份驗證服務整合到一個域中,並允許將它託管在不同的web應用程序中,這非常方便。該方法是將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

由於跨域發佈是您的第一個問題嗎?如果您仍希望跨不同域託管的服務可以檢查:http://msdn.microsoft.com/en-us/library/cc197955(v=vs.95).aspx – 2012-03-16 18:58:14

0

編輯:這也不會幫助你。

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

域上下文類包含三個構造:

  1. 嵌入所述URI必要與使用WebDomainClient類通過http域服務進行通信的默認構造函數。

  2. 允許客戶端指定替代URI的構造函數。

  3. 允許客戶端提供自定義DomainClient實現(通常用於單元測試或重定向到自定義傳輸層)的構造函數。

+0

是的,我使用的構造函數允許我指定一個自定義URI。我相信我的問題實際上是在服務端。出於某種原因,當我將它們移出原始Web應用程序時,實體域服務和身份驗證域服務不能一起工作。 – sipwiz 2011-03-24 02:15:46

+0

在新的Web應用程序中,您將它們移到了System.ServiceModel.DomainServices.Hosting,System.ServiceModel.DomainServices.Server和System.ServiceModel.DomainServices.EntityFramework設置爲Copy Local True? – 2011-03-24 02:23:46

+0

不,但也不是原來的網絡應用程序。我以前在這兩個Web應用程序中檢查了這些程序集的bin目錄,並且都沒有。他們不應該需要它們,因爲這兩個應用程序都位於同一臺機器上,並且組件位於GAC中。 RIA服務在新的Web應用程序上工作,因爲Siverlight客戶端可以與他們交談,這與身份驗證有些不相干,我想知道是否有人設法做同樣的事情。 – sipwiz 2011-03-24 03:17:53

相關問題