Служба .NET завершается с ошибкой 1053 в Windows Server 2003 r2 sp2 - PullRequest
2 голосов
/ 08 июня 2011

У нас есть набор служб Windows .NET 2.0, установленных на компьютере с Windows Server 2003 R2. Они настроены для запуска в качестве учетной записи локальной системы, а режим запуска - «Авто». Все службы не работают с ошибкой 1053 «Служба не ответила на запрос запуска или управления своевременно».

Я вставил логирование в одну из служб и исследовал, что проблема находится за пределами нашего кода. Не выполнено ни одной строки кода.

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

Система для воспроизведения: ОС: Windows Server 2003 R2 SP2 32-битная чистая установка + предварительные требования к продукту: SQL Server 2005 Express SP2, .NET Framework 2 SP2 + наш продукт

Что это может быть, любые предложения?

обновление от 04.07.2011:

Файл с журналом ProcessMonitor с клиентского компьютера: http://dl.dropbox.com/u/8982352/Logfile.zip Имя процесса службы: ParsecServiceHost.exe

Ответы [ 3 ]

1 голос
/ 13 сентября 2011

Наконец, сообщив об ответе, что поддержка Microsoft помогла получить:

Эта проблема возникает из-за того, что управляемая сборка .NET Framework 2.0 с подписью Authenticode загружается дольше, чем обычно.Подпись всегда проверяется при загрузке управляемой сборки .NET Framework 2.0 с подписью Authenticode.

Кроме того, загрузка управляемой сборки .NET Framework 2.0 может занять больше времени, чем обычно, из-за различных других параметров.Например, загрузка управляемой сборки .NET Framework 2.0 может занять больше времени, чем обычно, из-за конфигурации сети.

Вот Microsoft KB, которая описывает проблему и предоставляет исправление для .NET Framework 2.0. Но этоИсправление не устраняет проблему длительного времени загрузки, но добавляет возможность просто отключить отключение проверки подписи в .NET :), установив параметр generatePublisherEvidence в app.config!Примечание: если у вас установлен .NET Framework SP2, то исправление не требуется, просто установите параметр generatePublisherEvidence в app.config.

http://support.microsoft.com/kb/936707 - ИСПРАВЛЕНИЕ: управляемое приложение .NET Framework 2.0, котороеимеет подпись Authenticode для запуска занимает больше времени, чем обычно.

Чтобы решить проблему, вы можете использовать этот параметр конфигурации, чтобы отключить проверку подписи в управляемом приложении .NET Framework 2.0.Вы можете использовать этот параметр конфигурации в файле конфигурации приложения.Для этого добавьте следующий код в файл .exe.config для управляемого приложения .NET Framework 2.0:

<configuration>
    <runtime>
            <generatePublisherEvidence enabled="false"/>
        </runtime>
</configuration>

Если ваше приложение размещено в IIS, измените одно из следующих: C: \Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet.config C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config

Примечание. На компьютерах x64 необходимо такжеизмените одно из следующих: C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet.config C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG \ machine.config

0 голосов
/ 24 июня 2011

Вы не должны объявлять какие-либо ресурсы в конструкторе службы, которые будут использоваться в методе OnStart() службы. По сути, Constructor запускается в первый раз, затем он содержит значения, которые будут использоваться в OnStart(), но после OnStop() ресурсы освобождаются, и затем та же самая версия не может быть использована снова. Просто переместите весь код создания экземпляра из конструктора в OnStart(), и он запустится.

Вот ссылка из MSDN для быстрого ознакомления: http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onstart.aspx

В этом может быть еще одна проблема. Вы могли бы использовать отладочную сборку. Службы не работают в режиме отладки, поэтому для запуска службы следует использовать сборку выпуска.

0 голосов
/ 08 июня 2011

Когда служба работает без проблем на Win 7 / Vista, то я думаю, что проблема в вашем коде, например. ваш метод OnStart (). Обычно операции ввода-вывода не разрешены в этом методе, и будьте осторожны при использовании потоков в этом методе.

...