ASP.NET/IIS7.5 Запись файла журнала не работает (Права доступа, UAC, Конфиг., ???) - PullRequest
9 голосов
/ 13 мая 2011

У нас возникают проблемы при переносе наших приложений ASP.NET на Windows Server 2008 R2 x64 и IIS7.5.Проблема в том, что наши приложения ASP.NET записывают файлы журнала, а эти файлы журнала не записываются.Единственный способ, которым приложения записывают свои файлы журналов, - это если я вошел на сервер как локальный пользователь-администратор или щелкнул правой кнопкой мыши и запустил IE как «Запуск от имени администратора», ни одно из которых не является для нас приемлемым решением.

Наша платформа: Windows Server 2008 R2 x64 (настройка UAC - настройка по умолчанию) IIS7.5 ASP.NET 4.0 (с использованием проверки подлинности и олицетворения Windows, оба включены в web.config)

Наше приложение установленоto: D: [appname] [appnameWebSite] (все файлы .aspx, .dll и т. д. находятся здесь) \ Log (приложение пытается записать файл журнала в эту папку)

На сервере: Создан новый пул приложений (имя: [appname], .NET 4.0, управляемый режим конвейера: классический, Identity: ApplicationPoolIdentity, загрузка профиля пользователя: False, все остальные свойства по умолчанию). Созданное приложение IIS, указывающее на D: [appname] [appnameWebSite] и добавили его в новый пул приложений (уровень полного доверия). Пользователь домена в локальной группе администраторов

со всей конфигурацией и настройками по умолчаниюПринимая во внимание вышесказанное, приложение ASP.NET не будет записывать файл журналаПриложение работает нормально в браузере, но без файла log.txt.

Чтобы попытаться «исправить» эту проблему, мы попробовали много вещей: Настройка пула пробных приложений: Управляемый конвейерный режим: Интегрированная пробнаяНастройка пула приложений: Identity: NetworkService Настройка пула приложений: Identity: LocalSystem Настройка пула приложений: Загрузка профиля пользователя: True Gave Пользователи группы имеют полный контроль над файловой системой для структуры папок нашего приложения (папка пробного приложения, только папка журнала, пробная папка журнала, проба appnameWebSiteи только папки журналов) Предоставил пользователю IIS AppPool [имя приложения] (соответствует новому пулу приложений) полный контроль пользователя над файловой системой для структуры папок нашего приложения (папка пробного приложения, только папка лога, только папка appnameWebSite и папка журнала)

Ничто из этого не помогло.Опять же, приложение будет работать нормально, просто файл журнала не будет создан.

Как упоминалось выше, файл журнала создается при запуске приложения только в том случае, если мы выполняем вход на сервер с использованием локальной учетной записи администратора (что имеет смысл, поскольку он является суперпользователем) или если мы запустим IE от имени администратора и повысим привилегии.

Есть предложения?Помогите?Вопросы?

Спасибо!

Ответы [ 4 ]

9 голосов
/ 07 мая 2015

Я пытался предоставить все возможные разрешения, но все еще не получал никаких файлов журналов. Наконец я наткнулся на этот , в котором предлагалось сменить владельца моего каталога лог-файлов. Я проверил, и в качестве владельца каталога было установлено SYSTEM. Я изменил это на Администраторов и применил изменение рекурсивно. Я отскочил IIS, попал на веб-страницу с сайта в браузере, и теперь у меня есть файлы журнала. Ура!

Примечание: что меня удивило, так это проверка журнала системных событий. Я получал 15006 сообщений об ошибке «Владелец файла журнала или каталога C: \ inetpub \ logfiles \ W3SVC1 \ some.log недействителен. Это может быть потому, что другой пользователь уже создал файл журнала или каталог».

5 голосов
/ 18 мая 2011

Ну, после дней попыток каждой опции IIS, учетных записей пользователей и групп, разрешений файловой системы, Process Explorer и т. Д., Я думаю, что мы заработали:

  • Мы сбрасываем для всех параметров пула приложений IIS и веб-сайта их значения по умолчанию
  • Мы также сбрасываем разрешения для папки / файловой системы в нашей папке журнала на значения по умолчанию
  • Затем мы отключили конфигурацию усиленной безопасности Internet Explorer на сервере

И успехов!Файл журнала записывается как положено, независимо от того, какой пользователь использует приложение ASP.NET, и не важно, запускают ли они его на самом сервере или с рабочей станции.

Я не знаю, является ли отключение настройки усиленной безопасности Internet Explorer на сервере «правильной» операцией или она нарушает какие-либо передовые методы, но, похоже, она нам подходит.

У кого-нибудь есть что добавить?

3 голосов
/ 13 мая 2011

Я боролся с этим некоторое время. ApplicationPoolIdentity является членом группы «Пользователи», а группа «Пользователи» имеет ограниченный доступ.

В проводнике щелкните правой кнопкой мыши папку, в которую вы пытаетесь написать, и перейдите в раздел «Безопасность». Нажмите кнопку Дополнительно. вы увидите, что пользователи имеют разрешение на чтение и выполнение, а группа «Пользователи» может иметь или не иметь специальные разрешения. Если нет, нажмите «Изменить разрешения» и дайте пользователям возможность Создание файлов / запись данных и Создание папок / добавление данных . Это ограничено этой папкой. Обычно я использую подпапку, чтобы не предоставлять доступ на запись ко всему моему веб-сайту.

Попробуйте снова создать файлы журнала. Это единственное разрешение, которое мне нужно было установить, чтобы оно заработало.

0 голосов
/ 01 июля 2018

Для меня хитрость заключалась в том, чтобы предоставить права на запись для SYSTEM и Administrators не только в саму папку журнала, но и в каждую папку в пути .Это не то, как разрешения обычно работают в Windows, но IIS, кажется, действительно довольно специфичен в этом вопросе.Не то, чтобы есть хорошая причина для удаления этих двух из ACL для начала.

Если вы подозреваете, что это является проблемой, проверьте Журнал событий в разделе Журналы Windows / Система.Эта проблема проявляется как запись об ошибке из источника HttpEvent и гласит «Невозможно создать файл журнала C: \ path \ to \ logs \ W3SVC1 \ u_extend1.log. Убедитесь, что каталог журналов указан правильно, и у этого компьютера есть доступ на запись вэтот каталог. "

PS Это верно для IIS 10, но может применяться и к другим версиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...