从'System.Net.Http.HttpClientHandler'上的'CheckCertificateRevocationList'获取值时出错

时间:2019-03-01 12:51:12

标签: c# json.net dotnet-httpclient flurl

我在生产服务器上获取此信息,但不在我的开发或测试机器上获取此信息。我很难理解这里出了什么问题。

Error getting value from 'CheckCertificateRevocationList' on 'System.Net.Http.HttpClientHandler'.  
 at Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)     
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)   
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) 
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) 
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)     
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)     
 at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)   

错误是由于尝试从FLURL(https://flurl.io/docs/configuration/#event-handlers)序列化HttpCall调用对象而引起的

在应用程序初始化上

FlurlHttp.Configure(settings => settings.BeforeCallAsync = HandleFlurlBeforeCallAsync);

代码:

private async Task HandleFlurlBeforeCallAsync(HttpCall call)
        {
            var serializer = new JsonSerializer
            {
                Formatting = Formatting.Indented,
                ObjectCreationHandling = ObjectCreationHandling.Replace,
                MissingMemberHandling = MissingMemberHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
            };

            using (var sw = new StringWriter())
            using (var writer = new JsonTextWriter(sw))
            {
                serializer.Serialize(writer, new
        {
            call.FlurlRequest.Url,
            call.FlurlRequest.Headers,
            call.Request.Content,
            call.Request.RequestUri,
            call.RequestBody,
            call.HttpStatus,
            call.ErrorResponseBody

        });
                var log= sw.ToString();
            }
        }

0 个答案:

没有答案