服务器关闭时通过异常自定义 httpClient 过滤器

Custom httpClient filter through exception when server is down

我是 windows 商店应用的新手。我正在尝试向 HttpClient 添加自定义过滤器,它工作正常,但是当服务器关闭时,捕获块 return null 导致系统通过 System.AccessViolationException。我该如何处理这种情况。

  public IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress> SendRequestAsync(HttpRequestMessage request)
        {
            HttpResponseMessage response = new HttpResponseMessage();
            return AsyncInfo.Run<HttpResponseMessage, HttpProgress>(async (cancellationToken, progress) =>
            {
                if ((App.userData != null && !string.IsNullOrWhiteSpace(App.userData.Token)) || App.Get_user()) 
                {
                     request.Headers.Add("AuthorizationHeader", App.userData.Token);
                }
                try
                {
                    response = await innerFilter.SendRequestAsync(request);
                    if (response.StatusCode == HttpStatusCode.Forbidden)
                    {
                        ((Frame)Window.Current.Content).Navigate(typeof(LoginPage));
                        return response;
                    }
                    return response;
                }
                catch
                {
                    return null;
                }

            });
        }

如果是服务器故障,那么您可以使用适当的故障代码和 return 设置您的响应变量,而不是 returning null。

也就是说,HttpClient.SendRequestAsync 的上游调用者需要处理异常并且不应该与 AV 一起崩溃。 SendRequestAsync 文档中明确指出了异常处理的必要性。