Гость
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / System.Configuration works only for x64 .net apps / 4 сообщений из 4, страница 1 из 1
03.08.2021, 17:10
    #40088297
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
System.Configuration works only for x64 .net apps
внезапно, на одной машине (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
03.08.2021, 18:45
    #40088337
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
System.Configuration works only for x64 .net apps
мб с кодировкой какие то проблемы?
запусти в отладчике и посмотри детально, где проблемы. исходники можно сгенерировать, вместе с pdb файлами через dotPeek
...
Рейтинг: 0 / 0
04.08.2021, 05:15
    #40088469
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
System.Configuration works only for x64 .net apps
В 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
04.08.2021, 10:00
    #40088507
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
System.Configuration works only for x64 .net apps
Сон Веры Павловны
- т.е. в данном случае с конфигом машины что-то не так

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

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


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