2

毎分テキスト ファイルをサーバーにアップロードする .NET Mono アプリケーションを作成しました。私の意見では、アプリケーションのクラッシュを回避する最善の方法は、アップロード コードで try-catch を使用することです。これにより、予期しないエラーがキャッチされます。

そして、2日ほどは常に正常に動作し、その後、突然クラッシュします。すでに数週間原因を探していますが、見つかりません。

私が得たエラーは次のとおりです。

未処理の例外: System.Net.WebException: System.Net.FtpWebRequest.set_Sate (RequestState 値) [0x00000] の :0 の System.Net.FtpWebRequest.CheckIfAborted() [0x00000] で要求が中止されました。 FtpWebRequest.ProcessRequest(RequestState 値) [0x00000] in <filename:0 unknown>: at System.Threading.Thread.StartUnsafe () [0x00000] in <filename:0 unknown>:

4

2 に答える 2

1

おそらく、あなたのテレビ、つまりあなたのコードには何の問題もありません。

問題は、あまり堅牢ではない Mono の FtpWebRequest 実装です (FTP 会話のさまざまな段階でのタイムアウトの処理が不十分です)。同様のケースの分析を行い、調査結果をそこに投稿しました。

Mono for Android / MonoTouch System.Net.WebException: リクエストが中止されました

あなたのケースは、同一ではありませんが、Mono の FtpWebRequest に関する問題の一般的な「バッグ」を指しています。

于 2013-07-11T06:42:51.230 に答える
0

このようなエラーを見つけるのは非常に困難です。この関数をスレッドで実行すると言いました。だから私はそれがwhileループから呼び出されていると思います and thanThread.Sleep(1000*60);または as fire and forget。その理由は、関数が次の呼び出しの前に終了しFtpWebRequestていないか、まだ閉じられておらず、別のコンテキストで実行されていることが問題ではない可能性があります。

私は同様の問題を抱えていましたが、ここで試すことができます:

1)FtpWebRequest requestグローバルにして、関数呼び出しの前にまだ生きているかどうかを確認します。

2) 関数の最後でガベージ コレクターを呼び出します。

GC.Collect();
GC.WaitForPendingFinalizers();

それがうまくいくかどうか教えてください。

于 2013-02-20T09:57:14.533 に答える