2009-12-08 141 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.