我试图在 blazor(客户端)启动期间调用 api,将语言翻译加载到 ILocalizer 中。
此时,我尝试从获取请求中获取 .Result blazor 会在标题中抛出错误。
这可以通过在program.cs中调用此方法来复制
private static void CalApi()
{
try
{
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(@"https://dummy.restapiexample.com/api/v1/employees");
string path = "ididcontent.json";
string response = httpClient.GetStringAsync(path)?.Result;
Console.WriteLine(response);
}
catch(Exception ex)
{
Console.WriteLine("Error getting api response: " + ex);
}
}
Avoid .Result
,很容易陷入僵局。您收到此错误是因为单线程 WebAssembly 不(不能)支持该机制。我认为这是一个功能。如果它可以等待监视器,它就会冻结。
private static async Task CalApi()
{
...
string response = await httpClient.GetStringAsync(path);
...
}
所有事件和生命周期方法重写都可以async Task
在 Blazor 中,所以您应该能够适应这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)