簡體   English   中英

HttpClient.SendAsync() 返回狀態代碼 200,即使遠程服務器已關閉

[英]HttpClient.SendAsync() returns status code 200 even if the remote server is down

一個簡單的登錄方法,在我關閉我的 API 之前都可以正常工作。 然后 try-catch 塊按預期運行,拋出並捕獲異常,但是_response出現狀態代碼“200,OK”。 為了我的愛,我不知道為什么。 請幫忙!

代碼看起來很糟糕,主要是因為我正在對它進行所有修補和測試以弄清楚發生了什么。

HttpResponseMessage response = null;

public async Task<HttpResponseMessage> login(AuthModel model)
{
    HttpResponseMessage response = null;
    model.responseMessage = "";

    var client = new HttpClient();
    string text = "{\"email\": \""+model.email+"\",\"password\": \""+model.password+"\"}";
    var request = new HttpRequestMessage
    {
        Method = HttpMethod.Post,
        RequestUri = new Uri(_baseURL+"/api/user/login"),
        Content = new StringContent(text, Encoding.UTF8, "application/json")
    };

    try
    {
        using (response = await client.SendAsync(request))
        {
            HttpResponseMessage _response = null;
            
            //response.EnsureSuccessStatusCode();
            if (response.IsSuccessStatusCode)
            {
                //_response = response;
                var body = await response.Content.ReadAsStringAsync();
                var token = response.Headers.GetValues("auth-token").FirstOrDefault();
                model.authToken = token;
                model.name = body;
                model.responseMessage = "Congratulations!";
                return _response;

            }
            else
            {
                model.name = "";
                model.responseMessage = await response.Content.ReadAsStringAsync();
                return _response;
            }
        }
    }
    catch(Exception e) {
    // model.responseMessage = e.Message;

        return _response;
    }
}   

使用“HttpResponseMessage _response = new HttpResponseMessage();” 正在將 _response.StatusCode 設置為“200”並且代碼沒有處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM