java tcp wcf_使用NetTCP的WCF序列化错误

使用VS2012和NetTcpBinding . 当我从客户端调用serviceContract时出现以下错误 - 该服务托管在IIS中:

尝试序列化参数CS.ServiceContracts.Zzzzzz.Common时出错:GetZipCodesResult . InnerException消息是'Type ' System.DelegateSerializationHolder DelegateEntry ' with data contract name ' DelegateSerializationHolder.DelegateEntry:http://schemas.datacontract.org/2004/07/System ' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.' . 有关更多详细信息,请参阅InnerException .

这是我的ServiceContract:

[ServiceContract(SessionMode = SessionMode.Allowed, Namespace = "CS.ServiceContracts.Zzzzzz.Common",

Name = "IZzzzzzCommonService")]

public interface IZzzzzzCommonService

{

[OperationContract]

GetZipCodesResponse GetZipCodes(GetZipCodesRequest request);

}

这是我的DataContract:

[DataContract]

[Serializable]

public class GetZipCodesResponse : ResponseBase

{

[DataMember(IsRequired = true)]

public List ZipCodes { get; set; }

}

这是ResponseBase:

[DataContract]

[Serializable]

[KnownType(typeof(GetZipCodesResponse)), XmlInclude(typeof(GetZipCodesResponse))]

public class ResponseBase

{

[DataMember(IsRequired = true)]

public int ResponseCode { get; set; }

[DataMember(IsRequired = false)]

public int ReasonCode { get; set; }

[DataMember(IsRequired = false)]

public string ReasonText { get; set; }

}

以下是serviceContract接口的实现:

public class ZzzzzzCommonService : IZzzzzzCommonService

{

public GetZipCodesResponse GetZipCodes(GetZipCodesRequest request)

{

var response = new GetZipCodesResponse();

try

{

response.ZipCodes = ZipCodes.GetCustom(request.ZipCode, request.City, request.State);

}

catch (Exception ex)

{

this.BuildExceptionResponse(response, ex);

}

return response; // I get to this line ok, but here is where the error occurs

}

}

这是我调用服务的客户端代码:

public void ZipCodes()

{

var endPoint = new EndpointAddress(

"net.tcp://localhost/CS.WebService.Zzzzzz.Common/ZzzzzzCommonService.svc");

var binding = new NetTcpBinding { TransferMode = TransferMode.Buffered, SendTimeout = TimeSpan.MaxValue, ReceiveTimeout = TimeSpan.MaxValue, MaxReceivedMessageSize = 100000000, MaxBufferSize = 100000000 };

using (var channel = new ChannelFactory(binding, endPoint))

{

try

{

channel.Endpoint.Contract.SessionMode = SessionMode.Allowed;

var proxy = channel.CreateChannel();

var request = new GetZipCodesRequest();

request = new GetZipCodesRequest { ZipCode = "32701" };

response = proxy.GetZipCodes(request);

}

}

}

我调试了代码,我进入实体,dataSet填充了适当的行,但是当它发回数据集时,我收到错误 .

不确定我错过了什么 . 我相信我已正确装饰serviceContract和dataContract成员,因此不确定为什么序列化List时出现问题 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值