TypeInitializationException при запуске службы Windows, потому что раздел конфигурации не может быть создан

У меня есть странная ошибка на определенной машине Windows Server 2008 R2 (она работает над другими 2 008 машинами R2) при запуске службы Windows. Сервисное Распространенное использование. Вход и log4net. Однако на этой определенной машине обработчик разделов конфигурации для Общего. Вход не может быть создан.

Это перестало работать со следующими отслеживаниями стека (отформатированный для лучшей удобочитаемости). Что удивляет меня, больше всего SecurityException. Что может вызвать это?

У кого-либо есть подсказка?

System.TypeInitializationException: The type initializer for
    'MyWindowsService.Program' threw an exception.
--->
Common.Logging.ConfigurationException: Failed obtaining configuration for
    Common.Logging from configuration section 'common/logging'.
--->
System.Configuration.ConfigurationErrorsException: An error occurred creating
    the configuration section handler for common/logging: Request failed.
    (C:\Path\MyWindowsService.exe.Config line 7)
--->
System.Security.SecurityException: Request failed.
at System.RuntimeTypeHandle.CreateInstance(
    RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached,
    RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis,
    Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly,
    Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Configuration.TypeUtil.CreateInstanceWithReflectionPermission(Type type)
at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.Init(
    RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord)
at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.InitWithRestrictedPermissions(
    RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord)
at System.Configuration.RuntimeConfigurationRecord.CreateSectionFactory(
    FactoryRecord factoryRecord)
at System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(
    String configKey, Boolean& isRootDeclaredHere)
--- End of inner exception stack trace ---

Это продолжает:

at System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(
    String configKey, Boolean& isRootDeclaredHere)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(
    String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject,
    Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at Common.Logging.LogManager.<>c__DisplayClass6.b__3()
at Common.Logging.Configuration.ArgUtils.<>c__DisplayClass13.b__12()
at Common.Logging.Configuration.ArgUtils.Guard[T](Function`1 function,
    String messageFormat, Object[] args)
--- End of inner exception stack trace ---

at Common.Logging.Configuration.ArgUtils.Guard[T](Function`1 function,
    String messageFormat, Object[] args)
at Common.Logging.LogManager.BuildLoggerFactoryAdapter()
at Common.Logging.LogManager.get_Adapter()
at Common.Logging.LogManager.GetLogger(Type type)
at MyWindowsService.Program..cctor()
--- End of inner exception stack trace ---

at MyWindowsService.Program.Main(String[] args)

Моя конфигурация похожа на это (Общее. Вход части его так или иначе).


  
    

15
задан Ronald Wildenberg 10 August 2010 в 18:27
поделиться

2 ответа

Я видел странные вещи, которые происходили, когда клиенты загружали наш zip-файл (приложение ASP.NET) с нашего веб-сайта. Из-за функции безопасности «Этот файл пришел с другого компьютера и может быть заблокирован для защиты этого компьютера».

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


Параметр «Разблокировать» отображается только в том случае, если файл фактически заблокирован на вкладке «Общие» диалогового окна свойств файла:

enter image description here

17
ответ дан 1 December 2019 в 03:34
поделиться

Похоже, вам нужно предоставить разрешения учетной записи службы для доступа к файлу конфигурации.
РЕДАКТИРОВАТЬ: На самом деле на второй взгляд это не похоже на проблему, потому что на самом деле он читает файл конфигурации, но вы все равно должны дважды проверить разрешения.

ОБНОВЛЕНИЕ: это известная проблема с .NET 4.0, но есть обходной путь - см. http://social.msdn.microsoft.com/Forums/en-US/clr/thread/1e14f665-10a3 -426b-a75d-4e66354c5522 .

1
ответ дан 1 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

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