2010-08-20 91 views
0

建立在客户端,我有这样的课,而不会[DataContract]DataContract在WCF

public class UserEntity 
    { 
     public string login; 
     public string password; 
    } 

当我把[DataContract],并刷新这个类在WCF侧的基准,然后我不能启动Web服务。它说错误:

cannot create metadata...

怎么了?

+3

您是否将[DataMember]添加到您的公共领域?如果您不关闭所有属性,那么DataContractSerializer的行为与旧的XmlSerializer非常相似 - 或者如果您开始添加属性,则必须将它们全部添加 - 您不能混合匹配并添加一些属性.... – 2010-08-20 15:59:08

+0

具有“DataContract”属性的类将在WCF服务中定义。在你引用这个服务之后,你可以实现你的课堂并将它传递给它。 – Nate 2010-08-20 15:59:20

+0

此实体位于客户端的WCF类库中,没有编译器错误。 我只是把[DataContract]放在“public class UserEntity”之上 有什么问题吗?我是否也必须将[DataMember]放在属性旁边? 谢谢。 – Alan 2010-08-20 16:03:07

回答

0

你确定你确实知道,为什么你不能刷新参考?我的意思是你添加[DataMember] - 它失败了,你删除它 - 它的工作?或者它几天前开始工作,现在你添加[DataMember](以及其他许多东西),现在不起作用了?

但无论如何,解决“刷新参考”问题的最简单方法 - 使用SvcUtil.exe手动刷新参考。在这种情况下,错误消息将更简单地描述为简单的“哎呀!错误!”。

+0

是的,我真的相信只有当我添加[DataContract],它给出了错误。但我已经解决了将实体WCF边。 但是在WCF边I ca nt创建实体库和DAO库。这是常见的吗? – Alan 2010-08-20 17:49:15

+0

您可能会再次“崩溃”并尝试使用SvcUtils刷新引用。它显示你,什么是错的。 在我的应用程序中,我使用服务器和客户端的共享程序集(我知道,这不是真正的SOA方式,但对我来说更简单)...但也许我不明白你对“实体库”的立场: ) – 2010-08-20 18:21:00

0

你的情况是什么客户端和服务器端?什么是WCF方面的刷新参考?您的描述非常罕见。下面是说明如何创建复杂的数据类型和WCF类库服务:

  • 创建WCF类库
  • 添加数据合同类库
  • 添加服务类库
  • 实施服务合同而在类库
  • 添加主机项目
  • 从主体项目参考WCF类库
  • 主机服务从类库服务主体项目
  • 添加元数据端点托管服务
  • 创建客户端项目
  • 运行Visual Studio的
  • 使用添加服务引用创建于托管WCF服务代理主机外项目中的主体项目
  • Implment代码通过创建的代理

打电话给你的服务正如你看到的是没有在客户端的数据合同,并没有令人耳目一新的WCF服务的修改。