Каковы наиболее трудоемкие проверки, выполняемые .NET при выполнении управляемого приложения? - PullRequest
4 голосов
/ 28 января 2010

Я разработал службу Windows на основе .NET, которая использует управляемый компонентом (C #) и неуправляемый код (библиотеки C / C ++).

В некоторых доменных средах (например, Win 2k3 32-битный сервер в домене abc.com) иногда запуск службы занимает более 30 секунд (особенно при перезапуске ОС), поэтому не удается запустить службу. Я подозреваю, что это как-то связано с безопасностью на уровне предприятия, но я точно не знаю.

http://msdn.microsoft.com/en-us/library/aa720255%28VS.71%29.aspx

Я попробовал следующее безуспешно: - откладывать загрузку ссылок, перемещая директивы using как можно дальше от реализации сервисной базы (особенно пространства имен xml - известно, что это вызывает задержки при загрузке) - задержать загрузку и настройку log4net - предварительная компиляция кода с использованием ngen - задержка запуска рабочего потока - добавить / удалить манифест + порядки, установленные внутри - подписать / подписать двоичные файлы - используйте настройки конфигурации (там много настроек и уровень охвата для всех установлен на приложение) как можно позже - добавить все зависимости в GAC

Я еще не пытался добавить требования безопасности для класса, в котором реализован метод Main. Я не пытался реализовать свой собственный загрузчик конфигурации, потому что после проверки автоматически сгенерированного кода я заметил, что класс настройки является одиночным и он получает свой экземпляр по вызову.

Полностью удалив зависимость log4net, это сработало, но это не вариант.

Когда сетевая карта отключена, услуга запускается немедленно.

Ответы [ 2 ]

1 голос
/ 28 января 2010

Обычно вы используете SysInternals Process Monitor для диагностики этой проблемы. Тот факт, что это услуга усложняет дело. Проверьте это сообщение в блоге для аналогичного сеанса устранения неполадок.

Крякает, как, например, проблема с CRL (списком отзыва сертификатов). Чтобы отключить его: Панель управления, Свойства обозревателя, вкладка «Дополнительно», «Безопасность», снимите флажок «Проверить аннулирование сертификата издателя».

0 голосов
/ 28 января 2010

Мы обнаружили, что использование UDP-приложения log4net с разрешением имени (даже до 12.0.0.1) вызывало значительное замедление при запуске.

...