如何使用ServiceFabric.ServiceRemotingDispatcher.RequestResponseAsync中的requestBody

时间:2016-09-22 18:38:14

标签: c# datacontractserializer azure-service-fabric

覆盖方法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才能执行此操作。

0 个答案:

没有答案