Для чего нужна папка «Temporary ASP.NET Files»?

157

Я обнаружил эту папку C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Filesи у меня есть несколько вопросов.

  • Для чего ASP.NET использует эту папку и какие файлы хранятся здесь?
  • Как файл хранится здесь и когда он обновляется?
  • Папка нуждается в каком-либо обслуживании?
Алекс Ангас
источник
9
Если кто-то ищет этот каталог, он, кажется, переместился в C:\Users\[Username]\AppData\Local\Temp\Temporary ASP.NET Files.
Питер

Ответы:

174

Это так называемые папки теневого копирования.

Упрощенно .... и я действительно это имею ввиду

Когда ASP.NET запускает ваше приложение в первый раз, он копирует все сборки, найденные в папке / bin, копирует любые файлы исходного кода (например, в папке App_Code) и анализирует ваши aspx, ascx файлы в исходные файлы c #. Затем ASP.NET собирает / компилирует весь этот код в работающее приложение.

Одним из преимуществ этого является то, что он предотвращает возможность блокировки # библиотеки DLL сборки .NET (в папке / bin) рабочим процессом ASP.NET и, следовательно, невозможность ее обновления.

ASP.NET отслеживает изменения файлов на вашем веб-сайте и при необходимости начинает весь процесс заново.

Теоретически папка не должна нуждаться в обслуживании, но время от времени, и очень редко вам может понадобиться удалить содержимое. Тем не менее, я работаю в хостинговой компании, мы запускаем до 1200 сайтов на общий сервер, и мне не приходилось трогать эту папку ни на одной из 250 или около того машин в течение многих лет.

Это описано в статье MSDN. Общие сведения о динамической компиляции ASP.NET

Кев
источник
Привет, Кев, у меня есть com dll, который копируется в эту папку, dll нужны некоторые файлы конфигурации в текущем порядке папок для выполнения. Как я могу убедиться, что они также скопированы в эту папку?
Ракеш
2
@robot - Вы, вероятно, уже нашли ответ, но ради будущих читателей вы можете найти «оригинальное» расположение DLL с помощью Reflection и затем получить доступ к файлам конфигурации таким образом. См. Stackoverflow.com/a/837501/211627
JDB до сих пор помнит Монику
2
Эта папка, кажется, заполняется для меня из-за постоянной интеграции - каждый раз, когда сайт разворачивается (несколько раз в день), в папке создается новая копия - до сих пор 29 ГБ.
Энди Джойнер
3
Как хостинг веб-сайтов, возможно, вы никогда не трогаете эту папку, но для разработчиков это самая большая головная боль, с которой нам приходится иметь дело. Я потратил много целых дней, пытаясь решить простые проблемы, но сочетание тени IIS проекты в стиле copy и Visual Studio Web Site - это кошмар, и мне приходится очищать содержимое этой папки несколько раз каждый день.
bikeman868
8

CLR использует его при компиляции во время выполнения. Вот ссылка на MSDN, которая объясняет дальше.

cgreeno
источник
4

Вот где asp.net помещает динамически скомпилированные сборки.

StingyJack
источник