8

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


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

4

10 回答 10

9

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

基本上,在发布项目时,bin 文件夹中没有包含一些 dll。确保在参考下正确设置了以下 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 都需要将“复制本地”设置为 true。

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

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

于 2009-12-09T15:29:17.540 回答
1

如果您检查该服务请求上的错误(这是您看到的正常方式),Fiddler 中的内容说明了什么?NotFound 在插件中是通用的,但 fiddler 可能会在响应正文中向您显示 HTTP 500 或具有更多详细信息的内容。

于 2009-12-09T04:19:48.180 回答
1

1)你正在部署什么IIS?如果 < 7 你需要修补程序

2)包括你所有的RIA程序集(设置复制本地=>真)包括:

System.Web.Ria

System.Web.DomainServices。(其中有 4 个,取决于您使用的是什么)

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

于 2009-12-23T15:47:14.273 回答
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 配置有什么好处。

于 2010-10-14T15:02:27.317 回答
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

于 2011-08-02T14:17:34.533 回答
1

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

建议将 RIA 服务安装在将托管您的应用程序的 Web 服务器上。

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

先决条件检查

缺少以下必需组件:

  • Microsoft Visual Studio 2010 或更新版本或 Visual Web Developer 2010
  • Express Microsoft Silverlight 4 Developer Runtime 或更新版本 Microsoft
  • Silverlight 4 SDK 或 Microsoft Silverlight 5 SDK

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

msiexec /i RiaServices.msi SERVER=TRUE

我还建议您使用此解决方案,因为它不需要对一组特定 dll 进行特殊配置,这些 dll 可能在未来版本中发生变化。此外,发布过程会稍微快一些,因为这些文件不会被包含在内。

另请注意,您可以使用Web 平台安装程序在服务器上安装 Ria 服务,使用“用于 .Net Framework 4.0 的 WCF RIA 服务服务器安装”,其效果与SERVER=TRUE开关相同。不幸的是,这只是版本 1,缺少服务包 2。

于 2012-11-05T11:33:45.353 回答
0

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

于 2009-12-08T20:43:31.557 回答
0

WCF RIA 服务 VS 2008 部署错误

网上有很多不错的帖子,最好的帖子似乎在这里(感谢蒂姆)

尽管我发现的所有帖子在某种程度上都有用,但在我的案例中,最终的解决方案是不适当的数据库连接字符串。尽管 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" 
于 2010-04-16T21:42:32.800 回答
0

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

于 2010-05-28T21:52:52.890 回答
0

对我来说,是身份验证在 IIS 中未设置为“匿名”。我使用 Fiddler 获取生成的 RIA SCV URL,然后在浏览器中打开该 URL。该信息非常明确。

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

于 2012-03-02T16:23:37.787 回答