我有一个非常简单的Silverlight应用程序示例。我使用具有一个实体的实体模型向其添加了域服务。客户端应用程序只是在启动时加载实体中的所有行。当我在我的开发盒上运行它时,它按预期工作。但是,当我将它移动到我们的测试服务器时,我得到一个异常,说我无法找到我正在调用的方法(查询'GetCTCStation'的加载操作失败。远程服务器返回错误.NotFound。)。当我与Fiddler更密切地检查客户端/服务器通信时,我发现该请求将转到 http://[server url] /ClientBin/SilverlightApplication7-Client-Web-CTCService.svc/binary 。 我将域服务添加到Web项目的根目录,所以我不明白为什么客户端在ClientBin目录中查找它。它显然不存在。我在这做错了什么?我从未遇到过7月RIA预览版的任何问题。
它是相对的,但是会自动在Generated_Code文件中处理。并且webconfig中没有任何内容可供配置。我在创建域服务时使用了默认设置。我在实例化服务时尝试显式设置uri并发生了同样的异常。
答案 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
答案 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="Data Source=dataSource;Initial Catalog=intitalCatalog;User ID=userID;Password=password;"" providerName="System.Data.EntityClient"
答案 8 :(得分:0)
WCF RIA Services VS 2008部署错误 Here是您正在搜索下载示例的解决方案,并检查您的自助WCF RIA(Vs2008)服务。
答案 9 :(得分:0)
对我而言,IIS中的身份验证未设置为“匿名”。 我使用Fiddler获取生成的RIA SCV URL,然后在浏览器中打开URL。这条消息很明确。
我只需要允许匿名访问,重启应用程序池,一切都按预期工作。