WCF服务:返回自定义对象

时间:2009-12-29 13:08:25

标签: wcf

我在我的应用程序中使用WCF服务。我需要在服务类中返回一个自定义对象。 方法如下:

IService.cs:
[OperationContract]
object GetObject();

Service.cs
public object GetObject() 
{
  object NewObject = "Test";
  return NewObject;
}

每当我调用该服务时,它都会抛出异常,并显示以下消息:

System.ServiceModel.CommunicationException: "An error occured while receiving the HTTP response to <service path>"

内部例外:

System.Net.WebException: "The underlying connection was closed. An unexpected error occured on receive"

我们不能从WCF服务返回对象类型或自定义对象吗?

3 个答案:

答案 0 :(得分:14)

您应该返回标有DataContract属性的类的实例:

[DataContract]
public class MyClass
{
    [DataMember]
    public string MyString {get; set;}
}

现在更改您的服务界面:

[OperationContract]    
MyClass GetMyClass();  

您的服务:

public MyClass GetMyClass()      
{     
    return new MyClass{MyString = "Test"};     
} 

答案 1 :(得分:1)

您应该返回特定类型,而不是“对象”。 “对象”可以是任何类型。

答案 2 :(得分:0)

自定义对象很好,而MS说你不再需要使用[DataContract]或[datamember]属性,没有它们我没有成功。尝试使用属性标记自定义对象并查看正在进行的操作。通过启用跟踪和使用svcutil来获取跟踪,您可以获得有关明确发生的更多信息。