2009-04-24 47 views
0

我已經構建了一個Web應用程序,用戶可以請求在服務器上生成併發送回客戶端的報告。該過程工作正常,並將文件發送回客戶端,但我們無法打開文件。進一步的調查顯示,服務器上的進程仍由IIS應用程序池處理文件。服務器上的動態生成的文件不釋放進程句柄Windows Server 2003上的.NET

這裏是奇怪的部分:

  1. 的.NET代碼調用Close(),其關閉文件和基礎流。
  2. 這個問題只發生在我們的生產服務器上。在開發和測試中,它工作正常。
  3. 我們嘗試更改服務器和IIS中的許多不同設置。
  4. 我們已嘗試過許多不同的想法,以使其在生產服務器上運行,但迄今爲止沒有運氣。

這可能是什麼原因造成的?我們正在運行Windows Server 2003,IIS 6.請幫忙!

回答

1

您是否在服務器上運行防病毒軟件?它可能正在掃描文件,因爲它是一個新文件。

我回應上面關於Dispose的PITADeveloper的評論。我會進一步說,你應該確保你創建的每個實現IDisposable的對象都有Dispose調用。如果您創建它,則必須配置它:

using (var resource = ResourceType.Create()) 
{ 
    // Use the resource 
} // resource.Dispose called here even if your code throws an exception 
0

你說文件上的「.NET代碼調用Close()」。它是否也在用於創建文件的任何資源上調用Dispose()?

0

如果通過HTTP發送文件,服務器鎖定不會影響客戶端打開文件。你確定服務器關閉生產服務器上的文件嗎?也許生產服務器上的某些東西阻止了Web應用程序完全生成文件。

相關問題