我在我的应用程序中使用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服务返回对象类型或自定义对象吗?
答案 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来获取跟踪,您可以获得有关明确发生的更多信息。