Что такое папка aspnet_client в структуре IIS?

108

Я заметил, что в стандартной структуре веб-папок IIS часто есть папка aspnet_client. Для чего это используется? Это нужно?

Парень
источник

Ответы:

91

В .NET 1.1 дней и ранее эта папка предоставляла ASP.NET поддержку JavaScript для элементов управления проверкой и других функций. Если у вас нет сайта .NET 1.1 или более ранней версии, его можно безопасно удалить. Я бы сначала переименовал его, чтобы убедиться, что он не вызывает никаких проблем.

Дункан
источник
15
Он появляется, чтобы напомнить вам, как больше не делать таких вещей ... :)
Ostati
Даже если вы сейчас вышли из .Net 1.1 дней, вы можете использовать Crystal Reports, который, к сожалению, все еще использует указанную папку (и, вероятно, есть и другое программное обеспечение с таким же поведением). Так что, по крайней мере, сделайте резервную копию перед удалением папки
Вадим Левковский
66

В дополнение к тому, что говорили другие, он обычно создается инструментом aspnet_regiis, который может быть (повторно) запущен такими вещами, как Центр обновления Windows / AddRemove Windows components / IIS. Так что иногда, даже если вы удалите его, он может вернуться случайным образом. Может быть способ остановить это поведение, но я его не нашел (возможно, изменение версии приложения на .NET 2 действительно поможет).

Поэтому, если вы не используете определенные функции .NET 1.0 / 1.1 (проверка, интеллектуальная навигация и т. Д.), Вы можете удалить его без каких-либо проблем, просто не удивляйтесь, если он вернется!

масон
источник
28
Я считаю, что это периодически возвращается. Что больше всего расстраивает в этом, так это то, что каждый раз, когда он возвращается, он нарушает работу WebDeploy, поскольку учетная запись, под которой он запускается, не имеет доступа для удаления созданной папки aspnet_client!
Russ Cam
5
@RussCam У меня точно такая же проблема. Это нарушает работу WebDeploy по той же причине. Кто-нибудь нашел способ остановить случайное создание этой папки?
tugberk
4
Я просто невинно установил DotNet Framework 4.5, и вскоре наше развертывание WebDeploy (запущенное через TeamCity) сломалось по той же причине. Папка darn снова вернулась в результате установки 4.5. Кто-нибудь, пожалуйста, остановите это.
Michael12345
2
Теперь я фактически прибег к добавлению этих папок в наш пакет развертывания, чтобы TeamCity не пыталась их удалить. Кажется, что это загрязняет нашу базу кода, но, надеюсь, остановит борьбу за власть между ASP.NET и развертыванием нашего приложения.
Michael12345
1
Меня также серьезно раздражает то, что эта папка все время возвращается, у нас нет сайтов asp.net 1.x, и все же, похоже, каждое автоматическое обновление Windows помещает эту чертову папку на каждый сайт, что нарушает все мои веб-развертывания. Я согласен с @ Michael12345, что это не лучшее решение для добавления бесполезных папок в SC только для того, чтобы развертывания продолжали работать, и не нужно вручную исправлять каждый понедельник после обновлений побед на выходных, добавляйте его обратно на каждый сайт (с неправильными разрешениями ACL) . Раздражает!
MemeDeveloper
15

aspnet_client - это папка для «ресурсов, которые должны обслуживаться через HTTP, но устанавливаются для каждого сервера, а не для каждого приложения».

Некоторые из применений aspnet_client включают хранение ресурсов (например, JavaScript, изображений) для:

  • JavaScript для элементов управления веб-форм ASP.NET при использовании проверки на стороне клиента (в основном, для работы со старыми браузерами, такими как IE5, похоже)
  • ASP.NET 2.0 (до версии 4.0) для «Глобальных тем» (глобальных для всех сайтов на сервере, то есть)
  • некоторые версии Crystal Reports

Вероятно, в будущем эта папка будет использоваться / будет использоваться в дальнейшем. Излишне говорить, что, поскольку он содержит вещи, которые «необходимы для правильной работы приложения», но которые «не должны развертываться приложением», он останется чем-то вроде кошмара как для разработчиков, так и для системных администраторов.

Кажется, что «прототип» содержимого папки находится в C: \ inetpub \ wwwroot \, и кажется разумным предположить, что если на каком-либо конкретном веб-сайте IIS отсутствует ресурс / aspnet_client, тогда IIS попытается поступить правильно. и ... в крайнем случае ... создайте физическую папку в корневой папке веб-сайта и скопируйте туда файлы. Кажется, что IIS будет делать это, по крайней мере, когда "ASPNET_regiis / c" вызывается на данном сервере, что, вероятно, происходит автоматически в некоторых критических точках ... например, когда обновления .NET framework применяются к серверу, который имеет роль IIS.

Стратегии обработки каталога aspnet_client включают: * указание виртуального каталога, сопоставленного с C: \ inetpub \ wwwroot, в надежде, что IIS откажется от создания физического каталога; * удаление физического каталога время от времени, если вы уверены, что ваш сайт этого не делает. он вам не нужен, и вас это действительно беспокоит * игнорирование aspnet_client *, запускающего "ASPNET_regiis / c" самостоятельно, если вам не хватает папки и она нужна

Вероятно, наиболее важно то, что как разработчик вы должны четко понимать и задокументировать зависимости ваших приложений от каталога aspnet_client, а также убедиться, что в вашей процедуре установки есть соответствующие инструкции, чтобы убедиться, что каталог существует. Однако вам, вероятно, не стоит беспокоиться о том, чтобы фактически предоставлять каталог как часть вашего упакованного веб-приложения или веб-сайта - как вы могли бы сделать это для каждой версии .NET framework, которую сервер будет видеть в течение всего срока службы вашего приложения ?!

Некоторые ссылки, к которым я вернусь позже:

Дэвид Баллок
источник
поэтому, если вы добавите папку aspnet_client под wwwroot, ее содержимое будет скопировано в каждое устанавливаемое вами веб-приложение, я полагаю,
Джордж Бирбилис,
8

В нем также есть определенные значки и скрипты, которые необходимы для правильной работы отчетов Crystal даже в версиях ниже 1.1.


источник
Да, выяснил это на собственном горьком опыте. Я переместил наш экземпляр Ripplestone из виртуального каталога на веб-сайте по умолчанию на его собственный веб-сайт, и все стало странно ломаться в Ripplestone. Я посмотрел на консоль javascript и увидел, что она ищет что-то в разделе C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13 Не уверен, правильно ли это было или нет, но я просто скопировал всю папку aspnet_client из корня в каталог, в котором жил мой экземпляр Ripplestone.
Adam Nofsinger 06
3

Папка обычно предназначена для хранения Javascript на стороне клиента, который ASP.NET использует для таких вещей, как проверка.

Удаление должно быть безопасным.

JamesSugrue
источник
1

Подумал, что я добавлю это здесь, так как это ссылка, на которую меня постоянно направляли, когда я задавал этот вопрос в Google. Очевидно, с .NET 4.0 и новее эта папка больше не нужна, и ее можно без проблем удалить.

Дэвид
источник
0

Если вы используете Installshield для настройки веб-сайта ASP.net, имейте в виду, что эта функция присутствовала в Installshield 2010 и отсутствует в Installshield 2012. Installshield 2010 против 2012

Вишну Прасант
источник
Некоторые функции отсутствуют в IS2010. Попробуйте еще предыдущие версии.
Вишну Прасантх