我将域服务添加到Web项目的根目录下,所以我不明白为什么客户端要在ClientBin目录中寻找它。显然那里没有。我在这里做错了什么?我从来没有遇到过RIA的七月预览版的任何问题。
它是相对路径,但这在Generated_Code文件中自动处理。而且在webconfig中也没有配置。我在创建域服务时使用了默认设置。我尝试在实例化服务时明确设置uri,但出现了相同的异常。
<behaviors>
<behavior name="MyServiceBehavior">
<dataContractSerializer maxItemsInObjectGraph="3" />
</behavior>
</behaviors>
请记住默认值为Int32.MaxValue,即2,147,483,647
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)您正在部署在哪个IIS上?如果< 7,则需要热补丁。
2)包括所有RIA程序集(设置复制本地=> True),包括:
System.Web.Ria
System.Web.DomainServices.(根据您使用的内容有4种)
3)这可能是由于您ASPNET应用程序中的<authentication>
节点设置为Windows,但您的站点在IIS中设置为匿名。 对于大多数人来说,只需将<authentication>
节点更改为mode =“Forms”即可消除此错误并使您继续进行。 对于其他人,如果您的IIS配置设置为同时使用集成身份验证和匿名身份验证,则需要在IIS管理控制台中的站点的目录安全性设置中取消选中其中一个。
微软建议在MSDN上安装Ria服务。
建议在托管应用程序的Web服务器上安装RIA服务。
这里有一个技巧,可能会让大多数人望而却步。默认情况下,安装将列出一些先决条件,您通常不希望在服务器上安装。
先决条件检查
缺少以下必需组件:
- Microsoft Visual Studio 2010或更高版本或Visual Web Developer 2010
- Express Microsoft Silverlight 4 Developer Runtime或更高版本Microsoft
- Silverlight 4 SDK或Microsoft Silverlight 5 SDK
使用命令行参数SERVER=TRUE
运行installation将绕过此检查。
msiexec /i RiaServices.msi SERVER=TRUE
我也建议您使用此解决方案,因为它不需要针对特定一组可能在未来版本中更改的dll进行特殊配置。此外,发布过程将稍微快一些,因为这些文件不会被包含。
请注意,您还可以使用Web平台安装程序通过'WCF RIA Services Server install for .Net Framework 4.0'在服务器上安装Ria Services,其具有与SERVER=TRUE
开关相同的效果。不幸的是,这只适用于版本1,并且缺少服务包2。
WCF RIA Services VS 2008 部署错误
网络上有很多不错的帖子,最好的一个似乎是这里(感谢 Tim)
虽然我找到的所有帖子在某种程度上都很有用,但在我的情况下最终解决方案是不合适的数据库连接字符串。尽管 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="Data Source=dataSource;Initial Catalog=intitalCatalog;User ID=userID;Password=password;"" providerName="System.Data.EntityClient"