Бьюсь второй день, вот такой глюк, мож кто знает!
Программа падает с ошибкой The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception при исполнении как CGI в IIS.
Просто маленькая программа состоящая только из new SQLConnection, НО ... есть такая же программа, точно такие же настройки, и она не падает, а работает.
Факты:
1. progA.exe и ProgB обе на Net 2.0 И одни и те же References
2. Обе выполняют только new SQLConnection, return. (я все повыкидывал для отладки)
3. В комманд лайне обе работают.
4. IIS pool работает от того же юзера что и я сам в консоли.
5. В IIS не работает только одна (выполняются в одной и тоже дир. , один и тот же .config)
6. Переименование А в В, В в А не влияет.
7. При компиляции Net 4 Обе не работают с той же ошибкой.
Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlConnectionFactory' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlPerformanceCounters' threw an exception. ---> System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.ArgumentException: Illegal characters in path.
at System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str)
at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String path)
at System.AppDomainSetup.VerifyDir(String dir, Boolean normalize)
at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigurationHost.get_ConfigPaths()
at System.Configuration.ClientConfigurationHost.GetStreamName(String configPath)
at System.Configuration.ClientConfigurationSystem..ctor()
at System.Configuration.ConfigurationManager.EnsureConfigurationSystem()
--- End of inner exception stack trace ---
at System.Configuration.ConfigurationManager.EnsureConfigurationSystem()
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
at System.Diagnostics.DiagnosticsConfiguration.Initialize()
at System.Diagnostics.Switch.InitializeConfigSettings()
at System.Diagnostics.Switch.InitializeWithStatus()
at System.Diagnostics.Switch.get_SwitchSetting()
at System.Data.ProviderBase.DbConnectionPoolCounters..ctor(String categoryName, String categoryHelp)
at System.Data.SqlClient.SqlPerformanceCounters..ctor()
at System.Data.SqlClient.SqlPerformanceCounters..cctor()
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnectionFactory..ctor()
at System.Data.SqlClient.SqlConnectionFactory..cctor()
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnection..cctor()
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnection..ctor()
at parser.parser.Main(String[] args)
Здравствуйте, кубик, Вы писали:
К>Программа падает с ошибкой The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception при исполнении как CGI в IIS. К>Просто маленькая программа состоящая только из new SQLConnection, НО ... есть такая же программа, точно такие же настройки, и она не падает, а работает.
Спасибо за ответ!
Есессно я гуглил, никаких connection strings нет
просто голый конструктор. new SQLConnection() дает такую ошибку. В одной проге работает в другой нет
Обе программы сделаны позавчера примерно в одно и тоже время. Для них нет еще никаких "забытых настроек".
Здравствуйте, кубик, Вы писали:
К>просто голый конструктор. new SQLConnection() дает такую ошибку. В одной проге работает в другой нет К>Обе программы сделаны позавчера примерно в одно и тоже время. Для них нет еще никаких "забытых настроек".
Стектрейс смотрел? Дело не в бобине (sqlconnection)
at System.AppDomainSetup.VerifyDir(String dir, Boolean normalize)
...
at System.Configuration.ClientConfigurationHost.get_ConfigPaths()
...
at System.Diagnostics.DiagnosticsConfiguration.Initialize()
Ставь туда бряку и смотри чего там пошло не так. Навскидку вот ишью есть — https://github.com/dotnet/runtime/issues/25027 . Закрыто в мастере год назад. У тебя версия дотнета какая? Если младше 5 — скорее всего оно.
Здравствуйте, кубик, Вы писали:
System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.ArgumentException: Illegal characters in path.
путь к файлу конфигурации или права на файлы и каталоги.
1. проверить скопировав в c:\tmp и запустив
2. на вкладке безопасность папки с exe дать полные права пользователю ИИС.
3. почему CGI? это же трэш на IIS писать цги на дотнете.
AA>3. почему CGI? это же трэш на IIS писать цги на дотнете.
Надо деплоить на много компов, что б админы не мучались. Периодически обновлять — при cgi даж пул не надо рестартовать. Иногда запустить в консоли.
CGI легко отлаживать. Что б внурь нелазили. Нагрузка небольшая. Что б на линукс легко перенеслось. А что может быть лучше ?
К>CGI легко отлаживать. Что б внурь нелазили. Нагрузка небольшая. Что б на линукс легко перенеслось. А что может быть лучше ?
asp.net core
1 прекрасно работает под линуксом
2 не привязан к IIS (встроенный kestrel http server — позволяет запускать как IIS(различные варианты, в том числе cgi), как консоль или как виндос-сервер.
3 не приаязан к runtime (self-container)