2017-10-09 135 views
1

我們正在使用訪問Web API REST Web服務的Web API客戶端。在Visual Studio中調試時底層連接已關閉錯誤

An error occured while sending the request (Inner Exception: The underlying conection was closed: An unexpected error occured on a send) 

這僅在Visual Studio 2015年沒有debbugging運行代碼時,它不會發生在調試時發生的情況:

我們呼籲這在調試時,收到以下錯誤。 我們使用.NET 4.6.1。

這是爲什麼發生?爲什麼在調試時沒有調試和崩潰時運行。你有什麼想法如何解決這個問題,我們可以檢查什麼?

我們用下面的代碼,使Web服務調用:

public async Task<string> GetToken(string username, string password) 
    { 
     using (var client = new HttpClient()) 
     { 
      InitializeHttpClient(client); 

      HttpContent requestContent = new StringContent("grant_type=password&username=" + username + "&password=" + password, Encoding.UTF8, "application/x-www-form-urlencoded"); 

      var response = await client.PostAsync("token", requestContent); 

      if (response == null || response.StatusCode == HttpStatusCode.BadRequest) 
       return null; 

      if (response.StatusCode == HttpStatusCode.NotFound 
       || response.StatusCode == HttpStatusCode.RequestTimeout 
       || response.StatusCode == HttpStatusCode.BadGateway 
       || response.StatusCode == HttpStatusCode.ServiceUnavailable) 
      { 
       throw new Exception("No Connection to Web Service"); 
      } 

      var bearerData = response.Content.ReadAsStringAsync().Result; 

      return JObject.Parse(bearerData)["access_token"].ToString(); 
     } 
    } 


    private void InitializeHttpClient(HttpClient client) 
    { 
     client.BaseAddress = new Uri(_webServiceAddress); 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Add("User-Agent", "Test Client"); 
    } 

    private void InitializeHttpClient(HttpClient client, string token) 
    { 
     InitializeHttpClient(client); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token); 

    } 
+0

在調試同一個項目時,這是否發生在另一臺機器上? – DiskJunky

+0

發生這種情況時,您是否在代碼中放置了任何斷點?或者你只是用調試器運行,但不能在任何地方破壞?它總是發生還是偶爾發生? – Evk

+0

我有第二臺PC與Windows 10和Visual Studio 2017.一切正常運行。我可以正常調試應用程序。 發生此問題的PC在Visual Studio 2015的Windows 7上運行。 – Alexander

回答

1

這似乎是由Windows Update KB4041083引起的。 我們卸載了此更新,然後再次正常工作。

+0

很高興知道它已經解決,您可以將其標記爲答案,這樣可以幫助其他社區成員解決您的問題。感謝您的分享。 –

0

有幾個原因導致這樣的錯誤,所以你可以檢查以下

你已經正確配置的設置。 系統中的防火牆允許您網絡中配置的連接(協議,主機&端口) DNS服務器能夠解析主機。 由於任何原因,您的ISP不會阻止您的連接 由於您的錯誤沒有固定的解決方案,因此您可能需要努力解決實際問題。如果啓用,您還可以從日誌文件中找到一些有用的信息。

+0

如果用戶正在調試它,那麼它很可能運行在IISExpress而不是IIS中(儘管這是可能的)。如果是這種情況,那麼它不太可能是外部DNS或網絡問題,而是本地機器本身。 – DiskJunky

+0

當我們在沒有調試的情況下在同一臺PC上運行應用程序時,它按預期工作。這隻發生在Visual Studio中的debbugging時。因此我認爲網絡設置可以。 – Alexander

+0

Web API服務在我們網絡內的服務器上運行。我們只調試客戶端應用程序。 Web服務是我們的生產Web服務。當通過其他PC調用時以及在不調試應用程序的情況下運行應用程序時,Web Service運行正常。 – Alexander

相關問題