KB-FtpWebRequest.Timeout Default Value
| | 0 | | ![]() |
用FtpWebRequest下載大檔案時,出現了Connection Closed Exception,除錯過程中懷疑是逾時間題,所以我找到FtpWebRequest有以下兩個Timeout相關屬性:
- Timeout: 指完成Request的逾時限制,文件上說預設值是Infinite(-1),永不逾時。
- ReadWriteTimeOut: 每次寫入或讀取Stream動作所允許的Timeout。
文件說Timeout的預設值是無限大,但為了謹慎起見,我還是進入Debug Mode,看了FtpWebRequest Instance的Timeout值,100000!! What? 不是應該是-1嗎?
這激發了我的好奇心,套足柯南的名言: "真相只有一個!",再挖進去,用Reflector解析了System.Net.FtpWebRequest,看到以下的Code:
static FtpWebRequest()
{
m_AsyncCallback =
new GeneralAsyncDelegate(FtpWebRequest.AsyncCallbackWrapper);
m_CreateConnectionCallback =
new CreateConnectionDelegate(FtpWebRequest.CreateFtpConnection);
DefaultFtpNetworkCredential =
new NetworkCredential("anonymous", "anonymous@", string.Empty, false);
s_DefaultTimeout = 0x186a0;
s_DefaultTimerQueue =
TimerThread.GetOrCreateQueue(s_DefaultTimeout);
}
Bingo! 0x186a0==100,000,就是Debug時看到的數字。
還在想如何通報此一文件錯誤,就驚喜地發現新版的MSDN官方文件提供了Developer Community直接在文件上寫註解(Community Content)的功能。於是,我在MSDN Library留下了我第一個腳印。
Web 2.0時代,Content Provider與Consumer的界線愈來愈模糊,另一場資訊革命正悄悄展開!
Comments
Be the first to post a comment