【问题标题】:in FlUrl I try to use EnableCookies() and it throw a null reference exception在 FluUrl 我尝试使用 EnableCookies() 并抛出空引用异常
【发布时间】:2016-06-22 22:37:33
【问题描述】:

当我尝试执行时:

            using (var fc = new FlurlClient().EnableCookies())
            {
                var resp = "http://somesite.com".GetAsync();
                // var getResp = await "http://api.foo.com".GetAsync();

                var resultado = await resp;

                var x = resultado;
            }

我在 EnableCookies() 上得到一个空引用异常

堆栈:

   en Flurl.Url.op_Implicit(Url url) en C:\Aldenteware\Flurl\code\Flurl\Url.cs:línea 315
   en Flurl.Http.CookieExtensions.GetCookieContainer(FlurlClient client) en C:\Aldenteware\Flurl\code\Flurl.Http.Shared\CookieExtensions.cs:línea 145
   en Flurl.Http.CookieExtensions.EnableCookies(FlurlClient client) en C:\Aldenteware\Flurl\code\Flurl.Http.Shared\CookieExtensions.cs:línea 23
   en AfipProcesa.Form1.<flurlAsync>d__0.MoveNext() en c:\Users\fabian.LH\Documents\Visual Studio 2013\Projects\AfipProcesa\AfipProcesa\Form1.cs:línea 86
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   en AfipProcesa.Form1.<button1_Click>d__7.MoveNext() en c:\Users\fabian.LH\Documents\Visual Studio 2013\Projects\AfipProcesa\AfipProcesa\Form1.cs:línea 119
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
   en System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__4(Object state)

我必须做更多的事情还是以其他方式?

我把它放在一个 flurl 错误处理程序上,但它没有捕获它(因为它是一个 null ex)

我开始同时使用 await/async 和 flurl...抱歉,如果我犯了一个基本错误。

我以http://tmenier.github.io/Flurl/client-lifetime/上的代码为例

using (var fc = new FlurlClient().EnableCookies())
{
    await url
        .AppendPathSegment("login")
        .WithClient(fc)
        .PostUrlEncodedAsync(new { user = "user", pass = "pass" });

    var page = await url
        .AppendPathSegment("home")
        .WithClient(fc)
        .GetStringAsync();

    // Need to inspect the cookies? FlurlClient exposes them as a dictionary.
    var sessionId = fc.Cookies["session_id"].Value;
}

【问题讨论】:

    标签: c# cookies async-await flurl


    【解决方案1】:

    您似乎发现了一个与地址 this issue 的最近更改相关的错误。解决方法是使用基本 URL 播种 FlurlClient:

    using (var fc = new FlurlClient(url).EnableCookies())

    我会记录这个问题并尽快解决它,它显然不像记录的那样工作。

    【讨论】:

    • 非常感谢,它现在可以工作了,很抱歉下载源代码并检查自己发生了什么没有多大帮助,我试过但我有 vs2013,我还在学习所有关于 httpclient 的知识,我的想法是使用 flurl 代替 watin+IE 每天自动检查银行动态 =)
    • 没问题。 Flurl.Http 的 1.0 版本非常接近,所以我真的很高兴你发现了这个公然的错误。我更新了文档以反映解决方法,至少在我修复错误之前。
    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 2021-04-29
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多