2009-12-08 187 views
8

我有一個非常簡單的示例silverlight應用程序。我使用一個實體模型添加了一個域服務。客戶端應用程序只是在啓動時加載實體中的所有行。當我在開發箱上運行它時,它按預期工作。但是,當我將它移到我們的測試服務器時,我收到一個異常,說我找到的方法無法找到(加載操作失敗,查詢'GetCTCStation',遠程服務器返回一個錯誤NotFound。)。當我更仔細地檢查了客戶端/服務器通信與Fiddler時,我發現請求將會發送到http://[server url] /ClientBin/SilverlightApplication7-Client-Web-CTCService.svc/binary。 我將域服務添加到Web項目的根目錄,所以我不明白爲什麼客戶端正在ClientBin目錄中查找它。顯然不在那裏。我在這裏做錯了什麼? RIA的7月份預覽版我從來沒有遇到任何問題。WCF RIA服務部署問題


它是相對的,但是這是在Generated_Code文件中自動處理的。並且webconfig中沒有任何內容可以配置。我在創建域服務時使用了默認設置。在嘗試實例化服務和發生同樣的異常時,我試圖明確地設置uri。

回答

9

經過漫長的鬥爭並嘗試了很多不同的選擇後,我終於找到了解決方案。這篇文章是key

基本上,發佈項目時,一些dll沒有包含在bin文件夾中。確保在參考下面的dll的設置是否正確(確保System.ComponentModel.DataAnnotations指向C:\ Program Files \ Microsoft SDKs \ RIA Services \ v1.0 \ Libraries \ Server \ System.ComponentModel.DataAnnotations。 dll):

System.ComponentModel.DataAnnotations和以System.Web開頭的每個dll都需要將「Copy Local」設置爲true。

構建項目並重新發布。這爲我解決了這個問題。

我想感謝大家對這個問題的解決方案作出了貢獻(在這個主題和其他)。

+0

此SDK中不再存在System.ComponentModel.DataAnnotations.dll文件。我們應該投下這個答案嗎? – YeahStu 2011-08-24 15:14:17

+1

我在Silverlight 5和Ria Services 1.0 SP2上,這個答案仍然有效。事實上,請@Dragan或任何可以將此標記爲答案的人。 – 2012-01-13 16:23:48

0

您是否檢查了綁定配置的地址部分?它看起來像是使用相對地址。

1

如果您檢查該服務請求上的錯誤(這與您看到的方式相同),那麼Fiddler中的內容會說什麼? NotFound在插件中很普遍,但小提琴手可能會在響應主體中顯示HTTP 500或其他更多細節。

+0

在我的情況下,我得到了401錯誤。嘗試所有需要的文件複製本地選項,但仍然沒有運氣......任何提示? – Entrodus 2011-10-26 10:49:05

1

1)你在使用什麼IIS?如果< 7你需要Hotfix

2)包括含有所有的RIA程序集(集複製本地=>真):

System.Web.Ria

System.Web.DomainServices。(其中4個取決於你正在使用的是什麼)

3)這可能是ASPNET應用程序中的節點被設置爲Windows的結果,但是您的站點在IIS中被設置爲匿名。對於大多數情況,只需將節點更改爲mode =「Forms」即可刪除此錯誤並允許您繼續。對於其他人,如果您的IIS配置設置爲同時使用集成身份驗證和匿名,則您需要在IIS管理控制檯中的站點的目錄安全設置中取消選中其中的一個。

0

WCF RIA服務VS 2008部署錯誤

有在網絡上很多很好的貼子和最好的似乎是here(感謝添)

雖然所有我發現這個貼子都以某種方式有用,在我的情況下最終的解決方案是不恰當的數據庫連接字符串。雖然VS生成的DB串內VS工作得很好,我不能它,直到我修剪它是這樣部署到我的QA服務器:

add name="myEntities" connectionString="metadata=res://*/ReviewsModel.csdl|res://*/ReviewsModel.ssdl|res://*/ReviewsModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=dataSource;Initial Catalog=intitalCatalog;User ID=userID;Password=password;&quot;" providerName="System.Data.EntityClient" 
0

WCF RIA服務VS 2008部署錯誤 Here是你的解決方案正在搜索下載示例並檢查您的自己的WCF RIA(Vs2008)服務。

1

在我的情況的解決辦法是將「複製本地」下面從網站的引用組件的屬性文件夾以「真」:

System.ComponentModel.DataAnnotations 
System.ServiceModel.DomainServices.EntityFramework 
System.ServiceModel.DomainServices.Hosting 
System.ServiceModel.DomainServices.Hosting.OData 
System.ServiceModel.DomainServices.Server 
System.Web.ApplicationServices 
System.Web 
System.Web.Extensions 
System.Web.Mobile 
System.Web.Services 

如果一切是正確的後下一個重建這些組件將被複制到bin文件夾你的項目。

什麼是好的任何方便的IIS 7配置我沒有執行。

1

也進入這個問題(RIA返回「未找到」),但在我的情況下,它最終是因爲我的查詢返回比通過maxitemsinobjectgraph允許的更多的行。我的臨時解決方案是添加.Take(5000)來減少結果集,但永久解決方案需要擴展maxitemsinobjectgraph,如下所示。希望這可以幫助別人了...

<behaviors>  
<behavior name="MyServiceBehavior">   
    <dataContractSerializer maxItemsInObjectGraph="3" />  
</behavior> 
</behaviors> 

請記住,默認值爲Int32.MaxValue或2,147,483,647

MSDN - maxItemsInObjectGraph

MSDN - Int32.MaxValue

0

對我來說,這是該身份驗證未在IIS中設置爲「匿名」。 我使用Fiddler獲取生成的RIA SCV URL,然後在瀏覽器中打開URL。消息非常明確。

我只是不得不允許匿名訪問,重新啓動應用程序池,一切都按預期工作。

1

Microsoft建議您在MSDN上安裝Ria Services服務器。

建議將RIA服務安裝在將承載您的應用程序的Web服務器 上。

有一招在這裏,可能會看到大多數人迴避這個解決方案了。默認情況下,安裝將列出許多先決條件,通常不希望在服務器上安裝。

先決條件檢查

所需的下列組件是缺少:

  • 微軟的Visual Studio 2010或更高版本或Visual Web Developer 2010
  • 快遞微軟的Silverlight 4開發人員運行時或較新的Microsoft
  • Silverlight 4 SDK或Microsoft Silverlight 5 SDK

運行installation用命令行參數SERVER=TRUE將繞過此檢查。

MSIEXEC/I RiaServices.msi SERVER = TRUE

我也建議你使用這個解決方案,因爲它並不需要特殊的配置爲一組特定的可能在未來改變的DLL版本。此外,發佈過程會稍微快一點,因爲這些文件不會包含在內。

還要注意的是,你可以使用Web Platform Installer使用的服務器上安裝RIA服務「WCF RIA Services服務器安裝.Net框架4.0」其具有與SERVER=TRUE開關同樣的效果。不幸的是,這只是版本1,缺少服務包2.