.net WCF RIA服务;Windows Azure=>;实体没有定义键

.net WCF RIA服务;Windows Azure=>;实体没有定义键,.net,c#-4.0,azure,wcf-ria-services,.net,C# 4.0,Azure,Wcf Ria Services,背景信息 在使用WindowsAzure和WCFRIA服务进行开发时,我看到了很多随机错误和令人沮丧的情况,但这一次真的达到了顶峰 我有一个具有以下体系结构的应用程序:2个web角色(MVC3和带有Silverlight RIA的ASP.NET)=>业务层=>数据层(外部服务/表存储/SQL Azure)。 ASP.NET服务(配置文件/角色/会话)存储在表存储中 由于最近的需求变化,需要添加一个移动站点。我想为这两个GUI项目共享(服务器端)视图模型。举例说明: 我的问题 现在,当我的项目托

背景信息

在使用WindowsAzure和WCFRIA服务进行开发时,我看到了很多随机错误和令人沮丧的情况,但这一次真的达到了顶峰

我有一个具有以下体系结构的应用程序:2个web角色(MVC3和带有Silverlight RIA的ASP.NET)=>业务层=>数据层(外部服务/表存储/SQL Azure)。 ASP.NET服务(配置文件/角色/会话)存储在表存储中

由于最近的需求变化,需要添加一个移动站点。我想为这两个GUI项目共享(服务器端)视图模型。举例说明:

我的问题

现在,当我的项目托管在WindowsAzure环境中时,我会遇到可怕的“找不到”异常。对于fiddler,我发现它返回了以下异常:

DomainService“XXService”中的实体“XXModel”不存在 定义一个键。DomainService操作公开的实体类型 必须至少有一个用KeyAttribute标记的公共属性

奇怪的是,这个东西在本地Azure开发环境中完美地运行,但在上传到云中时却没有。我认为这个错误与ViewModels现在位于与RIA服务不同的程序集中有关,但是为什么它在本地工作而不是远程工作呢


如果有人需要任何补充信息,我很乐意回答您的问题。

您的实体是否有标有[Key]属性的属性?e、 g:

public class WidgetDef
{
    [Key]
    public int WidgetId { get; set; }

    public string Title { get; set; }
}
这对于RIA DomainServices使用的类型是必需的-如您问题中的错误消息所述


虽然我不知道为什么它会在开发环境中工作而不是在真实环境中工作。

我已经解决了这个问题。似乎RIA服务只有在Windows Azure中托管时,才能从托管服务的程序集中定义的模型类中获取属性。

是的,它已经顺利运行了几个月。这与发布到云端和将实体移动到另一个项目的组合有关……那么我想我帮不了你。但是感谢您提出这个问题,因为我们正在考虑将来将我们的ASP.NET/RIAServices项目移植到Azure。您仍然正确地部署了所有部分吗?RIA、Azure SDK和您的程序集都需要它。是的,所有的程序集都在部署中,它以前在同一个项目中工作过。您是否在开发环境中的干净目录中重新构建了该项目?我想知道您是否有一些来自先前构建的工件掩盖了这个问题。这并不能解决您的问题,但可以解释开发与部署之间的差异。@Paul Keister我已经尝试过了,但没有效果:(很抱歉浪费您的时间。我想既然RIA服务依赖于“预测的”代码,代码生成输出可能在本地不同步。显然这不是问题所在。