WebAssembly.JSException:类型错误:服务器未响应时无法获取

时间:2020-07-15 06:08:18

标签: c# blazor blazor-client-side

我想为服务器没有响应的情况编写代码。 我故意关闭后端以模拟这种情况。 HttpClient引发WebAssembly.JSException和消息

TypeError: Failed to fetch 

可以吗?

我认为这令人困惑。 我担心如果我不能依靠这种行为,就会出问题。 我该如何正确处理这种情况?

1 个答案:

答案 0 :(得分:0)

以下代码段描述如何执行对Web Api端点的HTTP GET调用,查询IsSuccessStatusCode的值,该值指示HTTP响应是否成功。如果成功,代码将检索数据流,将其反序列化为List<Contact>,然后将其返回给调用代码。

如果不成功(其他子句),请处理失败...在这里您可以进行任何检查,记录错误,显示消息等。

我要在这里说明的方向不仅是解决您的问题的方法,还包括如何解决诸如NotFound(404)异常等其他异常的方法。

您也可以使用response.EnsureSuccessStatusCode();在try / catch块中,并根据您的需要处理异常。

您可以通过各种方式来做所有这些事情...

public async Task<List<Contact>> GetContactsAsync()
        {
            var response = await httpClient.GetAsync("api/contacts");
           // response.EnsureSuccessStatusCode();
            if (response.IsSuccessStatusCode)
           {
               // Handle success
                  var responseContent = await response.Content.ReadAsStreamAsync();
            return await JsonSerializer.DeserializeAsync<List<Contact>>(responseContent);
           }
           else
           {
              // Handle failure
           }
            
        }