IIS 6+ASP.NET - создано много временных файлов

У меня есть ASP.NET + некоторые веб-службы.NET, работающие на IIS 6 (сервер win 2003). Проблема в том, что IIS генерирует много (!) Файлов в каталоге "c:\WINDOWS\Temp". много файлов - это тысячи файлов, размер которых превышает 3G.

Файлы создаются с помощью этой команды: C:\WINDOWS\SysWOW64\inetsrv> "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe" /t:library /utf8output /R:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ Временные файлы ASP.NET \vfagt\113819dd\db0d5802\assembly\dl3\fedc6ef1\006e24d8_3bc9ca01\VfAgentWService.DLL" /R:"C:\WINDOWS\ Assembly\GAC \ GAC \ GAC ".Web.Services\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll" /R:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll" /out:"C:\WINDOWS\TEMP\9i_i2bmg.dll" /debug- /optimize+ /nostdlib /D:_DYNAMIC_XMLSERIALIZER_COMPILATION "C:\WINDOWS\TEMP\9i_i2bmg.0.cs"

Файлы в каталоге temp являются парами *.out & *.err, где файл *.err имеет нулевой размер, а файл *.out содержит выходные сообщения компиляции.

Что заставляет IIS генерировать так много файлов?

Как я могу предотвратить это?

ОБНОВИТЬ:

Проблема заключается в том, что описанная выше команда (csc.exe) выполняется много (много) раз, в результате чего.out &.err генерируется так много раз, что он занимает место на диске.

Итак, мой вопрос: что заставляет эту команду запускаться так много раз? (У меня не так много файлов.aspx и.asmx в моем веб-приложении).

Спасибо мо

3 ответа

Вы не можете предотвратить это. IIS + ASP.NET динамически компилирует файлы, такие как.aspx, .asmx, .ascx, .ashx, .asax и другие. Это все файлы шаблонов, которые в конечном итоге преобразуются в исходный код на выбранном языке - C#, VB.NET или что-то еще, на чем вы хотите писать свои страницы ASPX.

Модель для ASP.NET, когда получен запрос на страницу, выглядит следующим образом:

  • проверьте, доступна ли сборка для запрашиваемой страницы и актуальна ли она. если это так, передайте запрос на страницу.
  • если нет, создайте исходный код из задействованных шаблонов (aspx, ascx и т. д.). Поместите сгенерированный исходный код в каталог ASP.NET Temp.
  • компилировать исходные файлы в сборки с динамическими именами, а также помещенные во временный каталог. Если вы используете C#, это означает, что он запускает csc.exe, как вы видели.
  • загрузить вновь скомпилированную сборку.
  • передать запрос этой сборке (например, шаг 1)

Файлы.out и.err - это просто stdout и stderr из вызова csc.exe. Они вряд ли будут занимать 3 ГБ пространства файловой системы.

Но ASPNET также сохраняет временные копии всех сборок, на которые ссылаются любые страницы или элементы управления (и т. Д.), В этом дереве каталогов. Если вы ссылаетесь на System.Xml.dll на трех отдельных страницах ASPX, то существует копия файлов System.Xml.dll в трех различных временных каталогах в дереве временных папок ASPNET. Эти копии могут накапливаться, и я не удивлюсь, если узнаю, что большая часть ваших 3 ГБ находится в копиях DLL.

Узнайте больше об этом на http://www.codeproject.com/KB/aspnet/ASPXFILES.aspx

Вы можете удалить любые файлы в C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files каталог. Это невозможно, пока IIS и ASP.NET активны. Если у вас есть период обслуживания, вы можете удалить их, когда сайт не работает. Если это машина разработчика, просто остановите IIS (net stop w3svc) удалите все подкаталоги в этой папке, затем перезапустите IIS (net start w3svc).


Связанные с:
- Устранение временных файлов ASP.Net
- Для чего нужна папка "Временные файлы ASP.NET"?

Ищите это в вашем web.config:

  </system.diagnostics>
    <switches>
      <add name="XmlSerialization.Compilation" value="1" />
    </switches>
  </system.diagnostics>

значение = 1 означает сохранение временных файлов. Вы можете предварительно скомпилировать файлы сериализации, чтобы компиляция вообще не происходила.

Не уверен, если это поможет, но здесь у вас есть несколько ссылок, которые описывают похожую ситуацию

http://geekswithblogs.net/akraus1/archive/2009/09/14/134820.aspx

http://social.msdn.microsoft.com/Forums/en-US/netfxremoting/thread/fddb5072-f84b-432a-945a-607e183e1da3

Другие вопросы по тегам