WCF RIA服务部署问题

时间:2009-12-08 20:35:49

标签: wcf silverlight wcf-ria-services ria

我有一个非常简单的Silverlight应用程序示例。我使用具有一个实体的实体模型向其添加了域服务。客户端应用程序只是在启动时加载实体中的所有行。当我在我的开发盒上运行它时,它按预期工作。但是,当我将它移动到我们的测试服务器时,我得到一个异常,说我无法找到我正在调用的方法(查询'GetCTCStation'的加载操作失败。远程服务器返回错误.NotFound。)。当我与Fiddler更密切地检查客户端/服务器通信时,我发现该请求将转到 http://[server url] /ClientBin/SilverlightApplication7-Client-Web-CTCService.svc/binary 。 我将域服务添加到Web项目的根目录,所以我不明白为什么客户端在ClientBin目录中查找它。它显然不存在。我在这做错了什么?我从未遇到过7月RIA预览版的任何问题。


它是相对的,但是会自动在Generated_Code文件中处理。并且webconfig中没有任何内容可供配置。我在创建域服务时使用了默认设置。我在实例化服务时尝试显式设置uri并发生了同样的异常。

10 个答案:

答案 0 :(得分:9)

经过长时间的斗争并尝试了许多不同的选择后,我终于找到了解决方案。这篇文章是key

基本上,发布项目时,bin文件夹中没有包含一些dll。确保在References下正确设置了以下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。

构建项目并再次发布。这解决了我的问题。

我要感谢为解决这个问题做出贡献的所有人(在这个主题和其他人中)。

答案 1 :(得分:1)

如果您检查该服务请求的错误(这与您看到的方式一样正常),Fiddler中的内容会说什么? NotFound在插件中是一般的,但是fiddler可能会在响应正文中向您显示HTTP 500或其他更详细的内容。

答案 2 :(得分:1)

1)你在寻找什么IIS?如果< 7您需要Hotfix

2)包括所有RIA程序集(Set Copy Local => True)包括:

System.Web.Ria

System.Web.DomainServices。(其中4个取决于您使用的内容)

3)这可能是因为您的ASPNET应用程序中的节点设置为Windows,但您的站点在IIS中设置为Anonymous。对于大多数人来说,只需将节点更改为mode =“Forms”即可删除此错误并允许您继续。对于其他人,如果您的IIS配置设置为同时使用Integrated Auth和Anonymous,则您需要在IIS管理控制台中的站点的目录安全性设置中取消选中其中一个。

答案 3 :(得分:1)

在我的案例中,解决方案是将以下程序集的“复制本地”属性从WebSite的引用文件夹设置为“True”:

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配置。

答案 4 :(得分:1)

也遇到这个问题(RIA返回“Not Found”),但在我的情况下,最终我的查询返回的行数多于maxitemsinobjectgraph允许的行数。我的临时解决方案是添加.Take(5000)以减少结果集,但永久解决方案需要扩展maxitemsinobjectgraph,如下所述。希望这有助于其他人...

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

请记住,默认值为Int32.MaxValue或2,147,483,647

MSDN - maxItemsInObjectGraph

MSDN - Int32.MaxValue

答案 5 :(得分:1)

Microsoft建议MSDN在服务器上安装Ria Services。

  

建议在Web服务器上安装RIA服务   这将托管您的申请。

这里有一个技巧可能会让大多数人回避此解决方案。默认情况下,安装将列出一些您通常不希望在服务器上安装的先决条件。

  

先决条件检查

     

缺少以下必需组件:

     
      
  • Microsoft Visual Studio 2010或更高版本或Visual Web Developer 2010
  •   
  • 表达Microsoft Silverlight 4 Developer Runtime或更新的Microsoft
  •   
  • Silverlight 4 SDK或Microsoft Silverlight 5 SDK
  •   

使用命令行参数SERVER=TRUE运行installation将绕过此检查。

  

msiexec / i RiaServices.msi SERVER = TRUE

我还建议您使用此解决方案,因为它不需要针对特定​​dll集的特殊配置,这些dll在将来的版本中可能会更改。此外,发布过程会稍微快一些,因为这些文件不会被包含在内。

另请注意,您可以使用{{3>}在服务器上使用'.Net Framework 4.0的WCF RIA服务服务器安装'安装Ria服务,其效果与SERVER=TRUE切换。不幸的是,这只是版本1,缺少Service Pack 2.

答案 6 :(得分:0)

您是否检查了绑定配置的地址部分?看起来它正在使用相对地址。

答案 7 :(得分:0)

WCF RIA Services VS 2008部署错误

网上有很多不错的帖子,最好的帖子似乎是here(谢谢蒂姆)

虽然我发现的所有帖子在某些方面都很有用,但我的最终解决方案是不合适的数据库连接字符串。尽管VS生成的数据库字符串在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" 

答案 8 :(得分:0)

WCF RIA Services VS 2008部署错误  Here是您正在搜索下载示例的解决方案,并检查您的自助WCF RIA(Vs2008)服务。

答案 9 :(得分:0)

对我而言,IIS中的身份验证未设置为“匿名”。 我使用Fiddler获取生成的RIA SCV URL,然后在浏览器中打开URL。这条消息很明确。

我只需要允许匿名访问,重启应用程序池,一切都按预期工作。