【问题标题】:Check whether the API is running or not检查 API 是否正在运行
【发布时间】:2021-10-27 12:13:20
【问题描述】:

我有一个用于存储数据的 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 没有运行,我该如何处理?

【问题讨论】:

  • 哪里有异常代码?您能否显示整个代码,请
  • 到目前为止的异常代码只是在用户访问这个api之后处理,它只是处理用户输入是否为空/如果它存在于数据库中等等。我认为没有必要,所以我没有出现。

标签: asp.net .net asp.net-web-api httpexception consuming


【解决方案1】:

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

像这样:

switch(resultDisplay.StatusCode){
case 200: return view("success"); /* since successful code is 200*/
break;
case 400: return view("error");
break;
}

【讨论】:

  • 由于错误“无法将 int 类型隐式转换为 System.Net.HttpStatusCode”,我无法将其保留为 `case 200: ...`。将状态代码放在双引号或单引号中也不起作用。接下来我应该尝试什么?
  • 您可以使用 HttpStatusCode.BadRequest 代替字符串或任何其他您想要的状态代码
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2018-10-12
  • 2014-08-25
  • 1970-01-01
相关资源
最近更新 更多