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
我有一个 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