2017-04-14 131 views
0

我在Windows服務中使用RestSharp客戶端時遇到問題。 當API關閉時,連接丟失。但是一旦API再次運行,其他客戶端會一直拋出相同的錯誤。 即使我設置了RestClient的新實例。Restharp:底層連接已關閉

任何人都有同樣的問題和工作解決方案或建議?

+0

你有導致此代碼的例子嗎? – vipersassassin

回答

2

我是路德維希的同事。 我們的應用程序啓動並連接到api, 應用程序繼續運行並調用api。 當api突然關閉(重新啓動)時,我們的應用程序出現錯誤:底層連接已關閉:服務器關閉了預期保持活動的連接,我們調用InitODataClient和ReadConfigAsync函數來重新創建restClient 。 當API再次運行時,我們期望RestClient再次運行,但我們仍在繼續:底層連接已關閉。無法建立安全通道ssl/tls 當我們重新啓動我們的應用程序時,所有事情都可以再次運行。 沒有證書問題。 看來,創建一個新的RESTClient實現對象使用舊的(無效)連接 某些代碼,我們使用:

private RestClient restClient; 

    private void InitODataClient() 
    { 
     restClient = new RestClient(options.BaseUrl); 
     restClient.AddDefaultHeader("Authorization", "Bearer " + options.AccessToken); 
    } 

    private async Task ReadConfigAsync() 
    { 
      var requestApplication = new RestRequest("Applications/" + Guid.Parse(applicationId)); 
      var response = await restClient.ExecuteGetTaskAsync<Application>(requestApplication); 
//Here the response contains the underlying connection is closed error 
    } 

    public async Task RestartAsync() 
    { 
     Stop(); 
     do 
     { 
      try 
      { 
       Logger.Log("Trying to reconnect to the server in 5 seconds..."); 
       Thread.Sleep(5000); 
       InitODataClient(); 
       ReadConfigAsync().Wait(); 
       break; 
      } 
      catch (Exception) { } 
     } 
     while (true); 
    } 
相關問題