2011-02-25 64 views
2

讓我們來詳細說明這個相當奇怪的問題。.NET Webservice處理大文件正在使其線程中止

我們有一個非常大的文本文件處理,它是780MB,並且很可能會變得更大。 此文件的處理位於.NET WebService中,請求從Asp.Net網站客戶端發送並開始處理,然後完成時返回到網站。

在通過FTP讀取文件並在大約一分鐘內處理之前。 現在文件正在被移動到網絡共享中,但是當.Net WebService嘗試處理該文件時,該線程正在中止。

當我在我的機器上運行.net webService時,處理很好,並且完成(雖然速度很慢)。 當.net WebService放置在Web服務器(由IIS 6.0託管)時,會遭遇線程中止異常。

任何想法?

回答

3

如果您在自己的機器上以調試模式運行它,請求超時將被禁用。如果非調試,則啓用(默認爲110秒)。

http://msdn.microsoft.com/en-us/library/e1f13641.aspx

這就是說,有一個Web服務做冗長的處理一般不用於可擴展性是一件好事。保持Web [服務]請求的簡短性,並將長時間運行的批處理移至單獨的[windows]服務,以避免阻塞IIS/asp.net資源。

+0

是的我知道了,我會嘗試在我們的應用服務器上做到這一點。這會讓事情變得更好。 – MrJoeBlow 2011-02-25 12:28:08

+0

只是爲了說明一下:我錯誤輸入(服務器vs服務)。讓它在同一臺服務器上運行不一定是問題,但在IIS/asp.net下運行的長時間運行的任務可能會鎖定IIS資源。只要將它移動到一個單獨的進程(正常獨立的Windows服務)與文件系統監視器或計時器啓動處理可以做這種任務的奇蹟... – KristoferA 2011-02-25 16:36:06

0

可能是web服務沒有訪問網絡共享的權限。你有沒有嘗試將文件移動到本地驅動器?