使用Flurl发出PUT请求时出现NullReferenceException

时间:2017-09-28 11:01:33

标签: c# http flurl

我正在使用Flurl构建网址并发出PUT请求,如下所示:

using (var client = new Url("myurl"))
    .ConfigureClient(c => c.HttpClientFactory = new CompressHttpClientFactory())
    .WithCookie(new System.Net.Cookie("name", "value", "/", "domain"))
{
    var content = new StringContent("json here", Encoding.UTF8, "application/json");
    var response = await client.PutAsync(content)
}

但是我在致电PutAsync时遇到异常:

  

发生了System.NullReferenceException     的HResult = 0x80004003     Message =对象引用未设置为对象的实例。     来源= Flurl.Http     堆栈跟踪:      在Flurl.Http.FlurlClient.ReadResponseCookies(HttpResponseMessage响应)      在Flurl.Http.FlurlClient.d__28.MoveNext()      在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

我应该使用try / catch并忽略例外吗?

1 个答案:

答案 0 :(得分:0)

我怀疑实际的HTTP调用未能获得响应,并且Flurl正在尝试读取cookie,而不对响应进行空检查。这是known bug,已针对2.0版本进行修复/准备。 2.0现在在prerelease,我建议升级。它对于生产使用来说是稳定的,我只是不能保证changes一成不变。