2017-12-26 12 views
1

私は別のWebサービス(電子メールとして送信されます)にメッセージを送信し、サーバーから応答をダウンロードするWindowsサービスアプリケーションがあります。Windowsサービスが突然停止する

最近、サービスは数日で1回停止します。 (Eventough例外ハンドリングはまだ捕捉されておらず、サービスはクラッシュしています)。イベントビューアにログインなっ

例外は以下の通りです:

Frameworkのバージョン:v4.0.30319説明:プロセスが原因未処理の例外へ を終了しました。例外情報:System.Net.WebException スタック: System.Net.ServicePointManager.FindServicePointで(可能System.Uri、 System.Net.IWebProxy、System.Net.ProxyChainのByRef、 System.Net.HttpAbortDelegateのByRef、のInt32のByRef) System.Net.AuthenticationState.ClearSessionで System.Net.AuthenticationState.PrepareState(System.Net.HttpWebRequest) で System.Net.HttpWebRequest.get_ServicePoint()で System.Net.HttpWebRequest.FindServicePoint(ブール)(でSystem.Net.HttpWebRequest.Abort(System.Exception、Int32)at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackでSystem.Threading.ThreadPoolWorkQueue.Dispatch()でSystem.Net.HttpWebRequest.AbortWrapper System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem(AT(System.Objectの))

私は多くを検索しましたが、適切な答えが見つかりませんでした。 ご協力いただければ幸いです。 、あなたは決してエラーが何であるかを知らない

public class DataAPIWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri uri) 
    { 
     WebRequest w = base.GetWebRequest(uri); 
     w.Timeout = 60000; 
     return w; 
    } 
} 

public string Send(string path) 
{ 
    try 
    { 
     using (DataAPIWebClient webClient = new DataAPIWebClient()) 
     { 
      webClient.Credentials = new NetworkCredential("XXX", "YYY"); 
      string reply = webClient.DownloadString(path); 
      return reply; 
     } 
    } 
    catch (WebException) 
    { 
     throw; 
    } 
} 

答えて

4

これはあなたの問題

catch (WebException) 
{ 
    throw; 
} 

あなたは自分の例外を再スローされ、それがキャッチされることは決してありませんので、サービスがクラッシュするしかありませんでした:コードを使用しました

は私が提案してもよい

catch (WebException ex) 
{ 
    Log.Error(ex); 
    // Or write it to a file or something 
} 

編集:コメントに記載されているように、これは解決策ではありません。 キャッチされたキャッチされたキャッチフックはキャッチされていません。

+0

これは解決策ではなく、良い方法です! –

+0

@WilmanPatel私は私のタイプとして私のポイントが滑り落ちるのを感じることができます –

+0

すばらしい応答のためにたくさんありがとう。 "Send"メソッドはさまざまなメソッドから呼び出され、他のすべてのメソッドコードはTry、catchブロックにラップされます。例外はデータベースだけでなくTextfileにも記録されます。 ServicePointManager.FindServicePointに関連する例外はまだ捕捉されていません。 –

関連する問題