2017-04-14 30 views
0

WindowsサービスでRestSharpクライアントを使用する際に問題があります。 APIがダウンすると、接続が失われます。しかし、APIが再び実行されると、残りのクライアントは同じエラーをスローし続けます。 RestClientの新しいインスタンスを設定したとしても。Restsharp:基底の接続が閉じられました

誰も同じ問題と解決策または提案を持っていますか?

+0

は、あなたがこの原因コードの例を持っていますか: 我々が使用するコードのいくつかの接続 新しいRestClientオブジェクトを作成すると、古い(無効)を使用しているようですか? – vipersassassin

答えて

2

私はルードヴィヒの同僚です。 アプリケーションが起動し、apiに接続します。 アプリケーションは実行し続け、apiを呼び出します。 APIが突然ダウン(再起動)すると、アプリケーションにエラーが発生します。基本接続が閉じられました:サーバがによって閉じられていることが予想され、接続を再開するためにInitODataClient関数とReadConfigAsync関数を呼び出します。 。 APIが再び実行されているとき、RestClientが再び機能することが期待されましたが、引き続き次のようになります。基本接続が閉じられています。 ssl/tlsのセキュアなチャネルを確立できませんでした アプリケーションを再起動すると、すべてが再び機能します。 証明書に問題はありません。

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); 
    } 
関連する問題