3

こんにちは、WebRequest の非同期メンバーを使用して、IIS ftp サーバーにファイルをアップロードしています。

2 つのファイルを正常にアップロードできます。ただし、3 番目のファイルの BeginGetResponse は、コールバック ルーチンを呼び出しません。

アイデアを歓迎しますか?

ありがとう、

ジョン

4

2 に答える 2

1

御返答いただき有難うございます。問題がServicePoint.Connection.Limitにあることを発見しました

この値を4に増やし、同期メソッドの使用を開始しました。私のFTPスタッフは、必要に応じてファイルをアップロードするようになりました。

ただし、ファイルがそのままサーバーに到達することは確認できますが、ほとんどの場合、ストリームのClose()メソッドは、接続が閉じられたことを示すWeb例外をスローします。

キープアライブを試しましたが、転送の約10%(非常に大まかな)の例外を減らしました。

送信されたバイト数==ファイルの合計バイト数を確認できるため、エラーは無視しますが、紳士的ではありません。

これを回避する方法がよくわかりません。私は何日もグーグルで過ごし、同様の問題を抱えている人々を見つけましたが、本当の答えはありませんでした。

時間が短いので、当分の間、プロジェクトの残りの部分を続行する必要があります。基になる接続が閉じないようにする方法について何かアイデアがあれば(ドロップするのは制御チャネルだと思います)、よろしくお願いします。洞察。

ジョン。

于 2009-10-06T10:39:32.267 に答える
1

いくつかのアイデア:

  • リクエストを同期的に行い、問題が解決するかどうかを確認してください。そうでない場合は、その 3 番目のファイルを詳しく調べてください (HUUUUUUUUUGE ですか?)
  • コールバック ハンドラでFtpWebRequest.EndGetResponse()を明示的に呼び出してから、応答で Close() を呼び出していることを確認してください。そうしないと、接続を開いたままにして、クライアント、サーバー、またはプロキシの接続制限にぶつかる可能性があります。
  • すでにこれらのことを行っている場合は、ネットワーク モニター 3.3などのネットワーク スニファーをインストールして、ネットワーク上で実際に何が起こっているかを確認してください。そこにエラーが表示されます。
  • エラーが表示された場合は、それらを追跡します。3 番目のリクエストがネットワーク上を通過するのを実際に見たことがない場合は、クライアントの接続制限が原因であると考えてください。3 番目の要求が送信されたのに応答がない場合は、同じクライアントからの N 要求を M 秒以内にスロットリングするなどのサーバーの問題を調べ、各要求の後に遅延を入れて、これを回避できるかどうかを確認してください。
于 2009-10-05T19:03:36.253 に答える