2012-09-14 14 views
3

我有一個IIS託管的WCF服務,昨天我發現有66,235文件夾(!!!)創建臨時文件夾下5個級別下臨時ASP.NET文件「目錄(\ 234lkj \ 98734dc \ assembly \ tmp)。這些文件夾中的每一個都只有一個服務所需的dll,它只需要6個,因此每個dll在不同文件夾上被複制約11,000次。 IIS是否將它們從bin文件夾複製,無論它們是否更改?這是正常的行爲嗎?是否有一個配置設置可以防止IIS(或任何進程正在執行此操作)不必要地複製dll?IIS託管WCF服務創建數以千計的臨時文件夾

回答

0

.NET使用temp文件夾來JIT編譯其他服務的引用。 .NET需要一個地方來創建這些文件,然後編譯這些代碼以最終使用該服務。現在,爲什麼看到這麼多的文件可能與設置託管該站點的應用程序池的方式有關。如果您查看應用程序池的高級設置,請查看分配了多少工作進程。每個工作進程都可以存在自己的內存,所以如果多個服務引用比比皆是,這將需要多個文件夾被JIT。另外,請檢查以確保進程孤兒沒有設置爲開啓。如果是這樣,你的進程可以留下文件,導致你看到的積累。

+0

我使用的DefaultAppPool最大工作進程= 2和進程孤立 - >啓用= False。我四天前刪除了所有臨時文件夾,上次檢查時創建了大約2,000個新文件夾。來想一想......爲什麼首先需要這些文件夾?我理解臨時asp.net文件的作用,但是在這個服務中,所有的東西都已經編譯好了,任何地方都沒有源代碼文件,只是將dll從一個文件夾盲目地複製到另一個文件夾中。有什麼不對...... – Sam