覆盖方法RequestResponseAsync
,我们获得变量byte[] requestBody
。
要反序列化此变量,我们使用DataContractSerializer
(或者NetDataContractSerializer
),但无论哪种方式,我们都需要知道它在序列化之前的类型。
public override Task<byte[]> RequestResponseAsync(IServiceRemotingRequestContext requestContext, ServiceRemotingMessageHeaders messageHeaders, byte[] requestBody)
{
using (var stream = new MemoryStream(requestBody)) {
DataContractSerializer dataContractSerializer = new DataContractSerializer(typeof(object));
object headers = dataContractSerializer.ReadObject(stream);
// LOG headers here!
// logger.log(headers.something);
}
return base.RequestResponseAsync(requestContext, messageHeaders, requestBody);
}
我们将Type
替换为object
以使requestBody
正确反序列化?我们希望在此特别反序列化它以记录信息,并且需要知道序列化之前的类型requestBody
才能执行此操作。