0

這是目前正在開發中的Visual Studio 2012,Silverlight 5和Ria Services。我聽說過部署這些問題,但我還沒有那麼遠。什麼會導致Ria Services 404錯誤,具體來說請求中有'/ binary'

當我看到在提琴手呼叫的URL看起來是這樣的:

http://127.0.0.1:81/ClientBin/DanielHarris-SilverlightApp-RiaService-NameOfDomainServiceClass.svc/binary/GetColours 

這是返回404,但我不相信「/二進制」應該在URL,並如果它正在通過那個請求,那麼該呼叫將成功。

給這裏更多的信息是解決佈局的概述:

Class Library Containing an EF Entity Model (ObjectContext) 
Silverlight Application 
ASP.NET Web Application with a DomainService class 
ASP.NET Web Application with the actual website that display the silverlight XAP 
  • 的ASP.NET應用程序與的DomainService引用EntityModel類庫
  • Silverlight應用程序有已啓用RIA服務,SL應用程序屬性中的RIA服務鏈接設置爲ASP.NET應用程序及其中的DomainService類
  • 帶有顯示Silverlight XAP的實際網站的ASP.NET Web App運行並加載CONTRO l罰款在正確的點,任何RIA呼叫失敗

我想知道是不支持將DomainService類放入它自己的.NET Web應用程序?我的想法是,這將創建一個完全獨立於實際顯示Silverlight控件的「主」Web應用程序的RIA端點。

那是我出錯了嗎?

編輯 - 我也嘗試將實體模型從它自己的類庫移動到具有DomainService類的Web應用程序中,但我仍然遇到同樣的問題。域服務,實體模型和顯示Silverlight應用程序的網站是否都需要在同一個項目中? I.E全部在一個網絡應用程序下?

+1

我發現Fiddler的[WCF Binary Inspector](http://archive.msdn.microsoft.com/wcfbinaryinspector)對調試很有幫助。 – Alyce

回答

0

默認情況下silverlight(ria svc)使用二進制端點。

WCF壓縮xml,它將是二進制的。否則它可能很重。

當我在小提琴手中追蹤它時,我總是在域服務調用中看到/ binary表達式。我也使用EF。 所以二進制應該在url.I認爲它應該是配置錯誤。

這裏是我的要求

/ClientBin/AHBSBus-Web-DomainSrv-DSrvSecurity.svc/binary/getServerDate

//請求

< getServerDate的xmlns =「HTTP:// tempuri。組織/「> </getServerDate>

//響應

< getServerDateResponse xmlns =「http://tempuri.org/」> < getServerDateResult> 2013-01-24T15:53:13。4574466 + 02:00 </getServerDateResponse>

http://blogs.msdn.com/b/saurabh/archive/2009/11/23/understanding-the-wcf-in-wcf-ria-services.aspx

的RIA服務的ServiceHost默認創建以下端點 -

a)對於Silverlight客戶端:SOAP W /二進制端點。 Binding = CustomBinding由HttpTransportBindingElement和BinaryMessageEncodingBindingElement組成 ..

您可以通過記錄詳細信息來跟蹤綁定。將這些行放入web.config中運行您的項目並打開日誌文件。

<system.diagnostics> 
<trace autoflush="true"> 
    <listeners> 
    </listeners> 
</trace> 
<sources> 
    <source name="System.ServiceModel" 
      switchValue="Information, ActivityTracing" 
      propagateActivity="true"> 
     <listeners> 
      <add name="sdt" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData= "WcfDetailTrace.svclog" /> 
     </listeners> 
    </source> 
</sources> 

1

默認情況下,Silverlight應用程序會嘗試找到的DomainService在承載它的應用程序。如果你想在不同的URL上使用DomainService,那麼你需要將該URL傳遞給DomainContext的構造函數。

如果您正在使用單獨的類庫,則需要確保Web應用程序引用類庫或在bin目錄中具有類庫的dll。您還需要RIA Services dll和web.config安裝程序。現在最簡單的方法是將RiaServices.Server NuGet包添加到類庫和Web應用程序中。新軟件包引用正確的dll並設置web.config。

相關問題