WCF - 下载时出错

时间:2013-11-06 14:01:13

标签: c# wcf

我有一个测试类,我正在尝试创建一个WCF服务,该类看起来像这样:

public class TestObject
{

    public int ObjID { get; set; }


    public string ObjName { get; set; }

    public TestObject(int id, string name) {
        ObjID = id;
        ObjName = name;
    }
}

当我尝试将服务引用导入clien应用程序时,出现此错误There was an error downloading [...]。如果我将[DataContract][DataMember]标记添加到我的班级,它可以正常使用,但是,我想在不添加DataContract的情况下使用它。

有关解决此问题的任何想法吗?

3 个答案:

答案 0 :(得分:1)

可以在不指定[DataContract][DataMember]属性的情况下使用wcf对象,但为了使其工作,您还需要包含一个空的构造函数。这个构造函数不必像下面的例子那样公开,但你必须有一个(公共,私有,内部等)

public class TestObject
{
    public int ObjID { get; set; }
    public string ObjName { get; set; }

    public TestObject() 
    { 
    }

    public TestObject(int id, string name) 
    {
        ObjID = id;
        ObjName = name;
    }
}

答案 1 :(得分:0)

您可以通过添加[DataContract]和[DataMember]来解决此问题。 WCF需要这些标记来序列化您的数据对象。没有它们,对象或字段将不会被序列化或包含在合同中。

答案 2 :(得分:0)

[Serializable]

尝试该类的属性..作为第一次尝试。

请参阅:

http://msdn.microsoft.com/en-us/library/ms733127.aspx

这是我正在寻找的文章(或者像我记得的文章)

http://www.biztalkgurus.com/biztalk_server/biztalk_blogs/b/biztalksyn/archive/2008/05/13/datacontracts-without-attributes-poco-support-in-net-3-5-sp1.aspx

使用Framework 3.5 SP1改变了一切。

所以,答案是“是的你可以”..“但它取决于框架版本”,它取决于Serialize(DataContractSerializer)。