2009-10-01 120 views
3

您好我正在使用WebRequest的異步成員上傳文件到IIS FTP服務器。FTPWebRequest上傳文件只會上傳兩個文件!

我可以成功上傳兩個文件。但是,第三個文件的BeginGetResponse永遠不會調用我的回調例程!

任何想法歡迎?

感謝,

約翰

回答

1

幾個想法:

  • 使同步的要求,看看問題是否會消失。如果不是,那麼就開始仔細查看第三個文件(是否是HUUUUUUUUUGE?)
  • 確保您在回調處理程序中明確調用了FtpWebRequest.EndGetResponse(),然後在響應中調用Close()。否則,您將面臨打開連接的風險,並可能與客戶端,服務器或代理連接限制相沖突。
  • 如果您已經在做這些事情,請安裝像Network Monitor 3.3這樣的網絡嗅探器,並查看線路上實際發生的事情。您將能夠在那裏看到任何錯誤。
  • 如果您看到錯誤,請追蹤它們。如果你從來沒有看到第三個請求,那就把客戶端連接限制看作是罪魁禍首。如果您看到第三個請求經過網絡但沒有響應,請在M秒內查看來自同一個客戶端的遏制N請求等服務器問題 - 並在每次請求後嘗試延遲以查看是否可以避免此問題。
1

感謝您的回覆。我發現我的問題是與ServicePoint.Connection.Limit

我增加了這個值爲4,並開始使用同步方法。我的FTP東西現在可以根據需要上傳文件。

不過,雖然我可以確認我的文件到達服務器完整的Close()方法的流大部分時間拋出一個異常的網絡抱怨說,連接被關閉。

我試過KeepAlive,但只減少了約10%(非常粗糙)的傳輸異常。

我忽略的錯誤,因爲我能夠確認發送的字節數==文件總字節數,但它不是紳士。

我不太確定如何避免這種情況;我花了幾天的時間搜索,發現了類似的問題,但沒有真正的答案。

由於時間緊迫,我不得不繼續我的項目的其餘部分,如果您對如何防止底層連接關閉有任何想法(我猜測它是控制通道下降)感謝你的見解。

John。