Winforms 从http flurl客户端捕获异常时出现问题

Winforms 从http flurl客户端捕获异常时出现问题,winforms,asp.net-core,flurl,Winforms,Asp.net Core,Flurl,我有一个带有.net5的RESTAPI,它有一个全局异常过滤器,在出现异常时返回一个ErrorMessage对象。 我从WinForms.net framework 4.8应用程序调用api,从服务器调用badrequests,从客户端得到System.AggregateException异常,根据flurl文档,它应该是FlurlHttpException。 我试着用HttpClient打电话,一切正常,但我发现使用flurl更容易,所以我想找到一个解决问题的方法,如果有人知道怎么做并想分享,

我有一个带有.net5的RESTAPI,它有一个全局异常过滤器,在出现异常时返回一个ErrorMessage对象。 我从WinForms.net framework 4.8应用程序调用api,从服务器调用badrequests,从客户端得到System.AggregateException异常,根据flurl文档,它应该是FlurlHttpException。 我试着用HttpClient打电话,一切正常,但我发现使用flurl更容易,所以我想找到一个解决问题的方法,如果有人知道怎么做并想分享,那就太好了

        try
        {
            var result = (serverUrl)
                         .AppendPathSegment(endPoit)
                         .PostJsonAsync(new { Email = email, Password = password }).Result;
            if (result.ResponseMessage.IsSuccessStatusCode)
            {
                var aut = result.GetJsonAsync<Autorizacion>().Result;
            }
        }
        catch (FlurlHttpException ex)
        {
            var error = ex.GetResponseJsonAsync<ErrorMessage>();
        }
试试看
{
变量结果=(服务器URL)
.AppendPathSegment(endPoit)
.PostJsonAsync(新的{Email=Email,Password=Password});
if(结果.响应消息.发布成功状态代码)
{
var aut=result.GetJsonAsync().result;
}
}
捕获(FlurlHttpEx异常)
{
var error=ex.GetResponseJsonAsync();
}

首先,更喜欢使用而不是阻塞
结果
调用。但是,如果您必须阻止呼叫,请使用以获取未包装异常。

谢谢您的回答,您的回答解决了我的问题。我不熟悉异步调用,在本例中,我不能使用异步等待,而是使用GetAwaiter()。GetResult()工作得很好,这是我的一个概念错误,如果我等待task.resl的结果,我永远不会得到flurl异常。再次拥抱并感谢您“在这种情况下,我不能使用异步等待”为什么不呢?Flurl是一个仅异步的库。以您现在的方式使用它会导致死锁,我建议您要么切换到异步编程模型,要么使用显式支持阻止HTTP调用的库。它说我不能使用async和Wait,因为我必须进行一些更改,但我最终还是这样做了,现在我使用了所有异步。。。拥抱