Flurl.http PostJsonAsync 消失

Flurl.http PostJsonAsync disappears

我有一个 class 正在发布到一个 API,它在我的单元测试中工作,但在我的 MVC 控制器中没有工作。

在测试器中,以下行工作正常,但在我的 MVC 应用程序中调用它时,我无法超出以下行。

public async Task<string> post( object values )       
    {
        using (var client = new HttpClient())
        {
            try
            {
                var responseString = await address.PostJsonAsync(values).ReceiveString();
                return responseString; //Never reaches this line while in MVC.

            }
            catch (Exception e)
            {
                //Console.Error.WriteLine(e.Message);
                return "";
            }
        }
    }

另一位同事帮我找到了问题所在。它与 async/await/sync 有关。 直接从调用更改为 return 结果解决了问题。

    public string post( object values ) 
    {
        try
        {
            var responseString = address.PostJsonAsync(values).ReceiveString().Result;
            return responseString;
        }
        catch (Exception e)
        {
            //Console.Error.WriteLine(e.Message);
            return "";
        }            
    }

用于使用 Flurl.Http 包,不仅是 Flurl 包

Get it on NuGet: PM> Install-Package Flurl.Http

Or get just the stand-alone URL builder without the HTTP features: PM> Install-Package Flurl

https://github.com/tmenier/Flurl