Мешайте пулу приложений IIS 7 сценарий сборки

Я должен присоединиться к хору, рекомендующему log4net, в моем случае, прибывающем из гибкости платформы (настольный .NET / Компактная Платформа, 32/64-bit) точка зрения.

Однако обертывание его в частной марке API главный антишаблон . log4net.ILogger дубликат .NET эти палата общин, Регистрирующаяся обертка , API уже, таким образом связываясь уже минимизирован для Вас, и так как это - также библиотека Apache, это не обычно даже беспокойство, потому что Вы не бросаете управления: разветвите его, если Вы должны.

Большинство библиотек-оболочек дома, которые я видел также, фиксирует один или несколько из унылого перечня отказов:

  1. Используя глобальный одноэлементный регистратор (или эквивалентно статическая точка входа), который теряет высокое разрешение рекомендуемого шаблон регистратора в классе ни для какого другого усиления селективности.
  2. Отказ выставить дополнительное Exception аргумент , ведя к многочисленным проблемам:
    • Это вырабатывает политику входа исключения, еще более трудную поддержать, таким образом, ничто последовательно не делается за исключениями.
    • Даже с последовательной политикой, форматируя исключение далеко в строку теряет данные преждевременно. Я записал пользовательское ILayout декоратор, который выполняет подробную развертку на исключении для определения цепочки событий.
  3. Отказ выставить эти IsLevelEnabled свойства , который отбрасывает способность пропустить форматирование код, когда области или уровни входа выключены.

11
задан Andrew Hanson 8 September 2009 в 18:22
поделиться

4 ответа

Вы можете попробовать изменить настройки службы агента сборки для входа в систему с учетной записью обычного пользователя вместо СИСТЕМЫ (по умолчанию), это можно сделать из панели управления службами (Пуск | Выполнить | services.msc).

Если это не помогает, вы также можете попробовать настроить appcmd на постоянное выполнение с повышенными привилегиями, см. этот документ для получения подробной информации.

Если такая опция недоступна для appcmd или он по-прежнему не работает, вы можете полностью отключить UAC для этого пользователя.

0
ответ дан 3 December 2019 в 08:04
поделиться

это довольно хакерский обходной путь, который я в итоге использовал:

1) Настройте учетную запись с ограниченным доступом для запуска вашей службы. Поскольку я использую службу CruiseControl.NET, я буду называть своего пользователя ccnet. У него НЕТ прав администратора.

2) Создайте новую учетную запись локального пользователя и назначьте ее группе администраторов (в этом примере я назову его iis_helper). Дайте ему какой-нибудь пароль и сделайте его бессрочным.

3) Измените права доступа iis_helper так, чтобы НЕ разрешать локальный вход или вход на удаленный рабочий стол, а также любые другие действия, которые вы можете предпринять для блокировки этой учетной записи.

4) Войдите в систему (локально или через удаленный рабочий стол) как ваш пользователь без прав администратора, в этом примере ccnet.

5) Откройте командный терминал и используйте команду runas команда для выполнения того, что нужно запустить на эскалации. Используйте параметр / savecred. Укажите вашего нового пользователя с правами администратора.

runas /savecred /user:MYMACHINE\iis_helper "C:\Windows\System32\inetsrv\appcmd.exe"

В первый раз вам будет предложено ввести пароль iis_helper. После этого он будет сохранен с помощью параметра / savecred (вот почему мы запускаем его один раз из реальной командной строки, чтобы мы могли ввести пароль один раз).

6) Предполагая, что эта команда выполнилась нормально, вы теперь можно выйти. Затем я снова вошел в систему как локальный администратор и отключил пользователя ccnet для локального интерактивного входа в систему и удаленного рабочего стола. Учетная запись используется только для запуска службы, но не для входа в систему. Это не обязательный шаг.

7) Настройте свою службу для работы под учетной записью пользователя ('ccnet').

8) Настройте любую запущенную службу (CruiseControl.NET в моем случае) для выполнения 'runas 'команда вместо' appcmd.exe 'напрямую, так же, как и раньше:

replace:

"C:\Windows\System32\inetsrv\appcmd.exe" start site "My Super Site"

with:

runas /savecred /user:MYMACHINE\iis_helper "\"C:\Windows\System32\inetsrv\appcmd.exe\" start site \"My Super Site\""

Следует отметить, что команда должна быть заключена в один набор кавычек, а все внутренние кавычки должны быть экранированы (косая черта- цитата).

9) Протестируйте, закончите, сходите в местный паб.


Правка : Я, по-видимому, сделал № 9 в неправильном порядке и перед тестированием выпил несколько лишних ...

Этот метод тоже не работает полностью. Он действительно пытается запускаться от имени административной учетной записи, однако он по-прежнему работает как неэскалационный процесс под администратором, поэтому прав администратора по-прежнему нет. Сначала я не заметил сбоя, потому что команда runas порождает отдельное окно cmd, а затем сразу закрывается, поэтому я не видел вывода сбоя.

1
ответ дан 3 December 2019 в 08:04
поделиться

Вот и все. Вы можете использовать это из CC.NET с NAnt или просто с NAnt:

http://nantcontrib.sourceforge.net/release/latest/help/tasks/iisapppool.html

0
ответ дан 3 December 2019 в 08:04
поделиться

Ваш код просто похож на менее странную конструкцию

function Foo () {
    var inner = 'some value';
    this.foo = 'blah';

    ...
};
var someObj = new Foo;
-121--719848-

Если класс Object на самом деле не является классом java.lang.Object (учебное пособие не включает импорт, поэтому его трудно увидеть), расширяет объект является избыточным.

-121--1511587-

Задачи сообщества msbuild включают AppPoolController, который, по-видимому, делает то, что нужно (хотя, как отмечалось, он датирован и в настоящее время поддерживает только IIS6.) Пример:

<AppPoolController ApplicationPoolName="MyAppPool" Action="Restart" />

При необходимости также можно указать имя пользователя и пароль.

Edit: только что было замечено, что MSBuild Extension Pack имеет Iis7AppPool задачу, которая, вероятно, более уместна.

7
ответ дан 3 December 2019 в 08:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: