0

我有一个用于存储数据的 API,我正在通过我的 mvc 应用程序使用它。身份验证过程、存储数据和其他一切工作正常。问题是我正在尝试处理将来可能发生的一些错误或异常。其中之一是处理我的应用程序无法连接到我的 Web api 并引发错误或将用户引导到其他地方的情况。

我的使用 api 的 Web 应用程序控制器:

HttpClient client = new HttpClient();
        client.BaseAddress = new Uri("https://localhost:44304");
            HttpContent content = new FormUrlEncodedContent(
            new List<KeyValuePair<string, string>> 
            {
                new KeyValuePair<string, string>("username", lgv.username),
                new KeyValuePair<string,string>("password", lgv.password),
                new KeyValuePair<string,string>("grant_type","password"),
            });
        content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
        content.Headers.ContentType.CharSet = "UTF-8";

        /*this is the line where all the parameters get passed and validates everything*/
        var resultDisplay = await client.PostAsync("token", content);
        /* **************************************************************************** */
        if (resultDisplay.IsSuccessStatusCode)
        {
            var loginData = await resultDisplay.Content.ReadAsAsync<LoginResponseViewModel>();
            Session["access_token"] = loginData.Access_Token;
        }

所以我尝试的是:

HttpException hc = new HttpException();
switch(hc){
case 200: return view("success"); /* since successful code is 200*/
break;
case 400: return view("error");
break;
}

但它似乎不起作用,因为这段代码只检查应用程序的状态而不是 api 的状态......所以我的问题是,如果我的 api 没有运行,我该如何处理它?

4

1 回答 1

0

因此,不是在应用程序上进行切换,resultDisplay.StatusCode而是通过这种方式使用响应状态代码检查 API 状态。

像这样:

switch(resultDisplay.StatusCode){
case 200: return view("success"); /* since successful code is 200*/
break;
case 400: return view("error");
break;
}
于 2021-08-28T20:29:18.733 回答