我的WCF服务中有以下DataContract
namespace MyNamespace
{
[DataContract(Namespace = Constants.ContractNamespace)]
public class MyResponse
{
[DataMember]
public string ResponseCode { get; set; }
[DataMember]
public List<MyObject> MyObjects { get; set; }
}
}
然后我将其用作我的一个OperationContracts中的返回类型
[OperationContract]
MyResponse ValidateById(string id);
然后我得到以下回复
{"MyResponse":{"MyObjects":null,"ResponseCode":"ERR001"}}
有没有办法让它只返回属性,所以它就像
{"MyObjects":null,"ResponseCode":"ERR001"}
更新 我也在使用transportClientEndpointBehavior
<endpointBehaviors>
<behavior name="EndpointBehavior_IMyService">
<transportClientEndpointBehavior>
<tokenProvider>
<sharedAccessSignature keyName="RootManageSharedAccessKey" key="keyhere" />
</tokenProvider>
</transportClientEndpointBehavior>
</behavior>
</endpointBehaviors>
和netTcpRelayBinding
<netTcpRelayBinding>
<binding name="NetTcpRelayBinding_IMyService"/>
</netTcpRelayBinding>
答案 0 :(得分:1)
您可以使用“正文样式”属性从配置文件中设置包装响应。 e.g。
<endpointBehaviors>
<behavior name="WebWithDefaults">
<webHttp defaultOutgoingResponseFormat="Json"
defaultBodyStyle="Bare" />
</behavior>
</endpointBehaviors>
以上代码假设webHttp协议。您可以将其更改为您的
答案 1 :(得分:0)
原来问题在于我的数据合同。
我在上面显示错误的实际上是
[DataContract(Name = "MyResponse", Namespace = Common.Constants.ContractNamespace)]
public class MyValidateModel
{
[DataMember]
public MyResponse MyResponse { get; set; }
}
但它必须是
[DataContract(Name = "MyResponse", Namespace = Common.Constants.ContractNamespace)]
public class MyValidateModel : Common.MyResponse
{
}