2013-03-04 64 views
0

在我們的Windows應用程序中,我們使用BITS上傳協議(使用upload-reply)將文件上傳到我們的服務器,對待它們並等待響應。 有時服務器的細化可能會很長(> = 10分鐘),我們會遇到超時問題。BITS上傳響應超時

根據該文件http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/[MC-BUP].pdf

3.1.2.2上傳響應超時定時器限制採取用於接收從任何 服務器不論所涉及的狀態轉換的2.2節中提到的反應的的時間量。默認 的值是5分鐘;法律範圍是任何正價值。

有沒有辦法改變默認值5分鐘?我如何設置更高的價值?

謝謝。

+0

因此,客戶端正在等待服務器響應超時。你是編碼服務器還是編碼客戶端?如果客戶使用哪種API(如果有的話)? – 2013-03-12 10:40:32

+0

我使用我們的專有語言編寫客戶端,我只能使用BITSADMIN.exe命令行來驅動BITS命令(這很糟糕,我知道......)我無法使用任何API。與此同時,我可能找到了兩個解決方案: - 超時服務器端句柄 - 註冊表項設置爲放大超時。我正在測試它們...... – 2013-03-12 10:47:51

+0

我沒有看到服務器如何處理它,除非它可以向客戶端發送一個HTTP標頭,表明它應該等待多長時間。但是,從文檔看來,定時器是客戶的私人事務。因此,註冊表鍵將是最可能的選擇。你確定你真的想要使用BITS作爲請求/響應協議嗎?服務器在完成時回調客戶端會更有意義。五分鐘是客戶持續進行會話的相當長的空閒時間。 – 2013-03-12 11:30:37

回答

0

我們嘗試修改某些註冊表項(如TimeQuantaLenght),但它不能解決問題。

要解決,首先我們放大網站的request timeout。報告中所doc

二:

服務器應用程序必須提供五分鐘內響應。如果 服務器應用程序在五分鐘內未答覆,則作業 將進入暫態錯誤狀態。當重試延遲到期時,BITS服務器將向服務器應用程序 發送另一個通知(應編寫服務器應用程序以處理重複的 通知)。

所以我們處理重複請求!在Transient Error的情況下,BITS協議嘗試在爲MinimunRetryDelay定義的時間後重新啓動傳輸。

我們自己管理這個問題;我們使用GUID識別每次傳輸,如果傳輸的GUID進入瞬時錯誤狀態,並重新啓動,我們檢查傳輸是否已經發生並處理相應的操作。

0

維基百科,上傳工作BITS requires IIS web server with BIT server extension

BITS 1.0版本只支持下載。從版本1.5起,BITS 支持下載和上傳。上傳需要IIS web 服務器,並在接收端使用BITS服務器擴展。

我不知道你是如何使用BITS協議,但是,this page介紹瞭如何使用BITS管理commnad行工具來創建下載或上傳的工作,並監測其進展情況。低於此開關可以幫助你:

/SetNoProgressTimeout作業超時

設置的時間長度,以秒BITS試圖發生,該第一瞬時錯誤後轉移 文件。

this other page描述了BITS IIS擴展屬性。我引用了你可能需要的一個。

後臺智能傳輸服務(BITS)使用ISAPI來擴展 IIS以支持上傳作業。 BITS使用這些屬性來確定 如何上傳文件。

BITSSessionTimeout數據類型:DWORD

的,如果沒有取得進展 上載文件的連接被保持的秒數;計時器在進行時重置。如果達到超時,BITS 會關閉連接,並清理與會話關聯的數據 。

+0

您可能能夠使用IIS UI爲虛擬目錄配置BITS上傳從虛擬目錄的上下文菜單中選擇屬性按BITS擴展選項卡訪問BITS屬性頁(必須安裝BITS服務器擴展ISAPI) 。http://msdn.microsoft.com/en-us/library/aa363164(v=vs.85).aspx – 2013-03-13 18:11:18