powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / System.Configuration works only for x64 .net apps
4 сообщений из 4, страница 1 из 1
System.Configuration works only for x64 .net apps
    #40088297
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
внезапно, на одной машине (win server 2012 R2 standart) на которой работает агент jenkins
начинают падать сборки, падать тесты
программы разные, ошибка одна

System.Configuration.ConfigurationErrorsExceptionApplication: TF.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Configuration.ConfigurationErrorsException
at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean)
at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(System.Configuration.ConfigurationSchemaErrors)
at System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
at System.Configuration.ClientConfigurationSystem.EnsureInit(System.String)

Exception Info: System.Configuration.ConfigurationErrorsException
at System.Configuration.ClientConfigurationSystem.EnsureInit(System.String)
at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(System.String)
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(System.String)
at System.Configuration.ConfigurationManager.get_AppSettings()
at Microsoft.TeamFoundation.Common.TFCommonUtil.GetAppSetting(System.String, System.String)
at Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer.get_MaxBackgroundThreads()
at Microsoft.TeamFoundation.VersionControl.CommandLine.TFCommandLine.Main(System.String[])

среди .net приложений которые перестали нормально работать - TF.exe, тулза поставляемая с VisualStudio через которую можно дергать исходники из TFS. Сама Visual Studio, пара собственных приложений, которые после сборки должны тестироваться.

эксперименты показали, что если приложение собирается для x64 - проблем нет, оно корректно работает с System.Configuration
если приложение собрано под AnyCPU or x86 - приложение запускается, но при попытке прочитать конфигурацию - падает.
ранее было все норм

переустановка .net framework и студии проблему не решают.

кто-нибудь с таким полтергейстом сталкивался?
гугл ничего толкового кроме "проверить на ошибки файл конфигурации" не советует (
...
Рейтинг: 0 / 0
System.Configuration works only for x64 .net apps
    #40088337
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мб с кодировкой какие то проблемы?
запусти в отладчике и посмотри детально, где проблемы. исходники можно сгенерировать, вместе с pdb файлами через dotPeek
...
Рейтинг: 0 / 0
System.Configuration works only for x64 .net apps
    #40088469
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ClientConfigurationSystem.EnsureInit есть только одно место, где вызывается ThrowIfInitErrors :
Код: c#
1.
2.
3.
4.
// Initialize machine configuration.
_machineConfigRecord = _configRoot.GetConfigRecord(
    ClientConfigurationHost.MachineConfigPath);
_machineConfigRecord.ThrowIfInitErrors();


Далее, BaseConfigurationRecord.ThrowIfInitErrors выглядит как
Код: c#
1.
2.
3.
public void ThrowIfInitErrors() {
    ThrowIfParseErrors(_initErrors);
}


а к полю _initErrors имеется комментарий:
Код: c#
1.
private ConfigurationSchemaErrors       _initErrors;            // errors encountered during the parse of the configuration file


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

Один из возможных вариантов (поскольку под х64 всё работает) - система конфигурации не может загрузить какие-то сборки, объявленные в кофиге машины, именно для х86. Можно запустить Fuslogw (лучше Fusion++ - он просто удобнее), и посмотреть, есть ли ошибки загрузки сборок.
...
Рейтинг: 0 / 0
System.Configuration works only for x64 .net apps
    #40088507
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
- т.е. в данном случае с конфигом машины что-то не так

и это оказалось в точку!
оказалось что исчезла папка - C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\
а вот для x64 она имелась - C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\

восстановление её содержимого решило проблему
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / System.Configuration works only for x64 .net apps
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]