WCF服务:返回自定义对象
我正在应用程序中使用WCF服务。我需要在服务类中返回一个自定义对象。 方法如下:WCF服务:返回自定义对象,wcf,Wcf,我正在应用程序中使用WCF服务。我需要在服务类中返回一个自定义对象。 方法如下: IService.cs: [OperationContract] object GetObject(); Service.cs public object GetObject() { object NewObject = "Test"; return NewObject; } 每当我调用该服务时,它都会抛出一个异常,并显示以下消息: System.ServiceModel.CommunicationE
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>"
我们不能从WCF服务返回对象类型或自定义对象吗?您应该返回特定类型,而不是“对象”。“对象”可以是任何类型。自定义对象很好,虽然MS说您不必再使用[DataContract]或[datamember]属性,但没有它们我就无法成功。尝试用属性标记自定义对象,看看发生了什么。通过打开跟踪并使用svcutil获取跟踪,您可以获得更多关于显式发生了什么的信息。您应该返回一个用
DataContract
属性标记的类的实例:
[DataContract]
public class MyClass
{
[DataMember]
public string MyString {get; set;}
}
现在更改您的服务界面,如下所示:
[OperationContract]
MyClass GetMyClass();
以及您的服务:
public MyClass GetMyClass()
{
return new MyClass{MyString = "Test"};
}
虽然我同意这是一个糟糕的设计,但我觉得WCF应该能够处理对象“object”是一个通配符。这意味着你可以退回任何东西。您需要使用
servicenknownTypeAttribute
告诉WCF您可以返回什么类型的内容。您的WCF服务在哪里托管?
public MyClass GetMyClass()
{
return new MyClass{MyString = "Test"};
}