Уважаемые специалисты, пожалуйста, помогите мне решить следующую проблему.
В моем приложении .NET C # есть такой код:
SqlConnection connection = new SqlConnection( SQLCONNECTION_STRING );
Это прекрасно работает на моей машине для разработки, но выдает исключение на сервере Windows 2003. Приложение работает через CGI и имеет уровень «Полное доверие».
Я пробовал несколько строк подключения, и я думаю, что строка не вызывает проблемы, потому что даже этот код получает исключение:
SqlConnection connection = new SqlConnection();
Спасибо.
Я нашел два странных факта:
- Это работает, если я подключаю отладчик к процессу и просто отслеживаю код.
- Это работает, если я запускаю приложение из командной строки (не через CGI, как требуется).
Так что я думаю, что-то не так с взаимодействием CGI и SqlConnection. Кто-нибудь знает об этом?
Спасибо всем за ответы.
Отредактировано, чтобы добавить:
Вот моя строка подключения:
"Поставщик = SQLOLEDB; Источник данных = (локальный); Исходный каталог = Пользователи; Идентификатор пользователя = пользователь; Пароль = пароль;"
Я также попробовал несколько возможных вариантов, как описано там: http://www.connectionstrings.com/sql-server
Ниже приведена информация об исключении:
The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception.
at System.Data.SqlClient.SqlConnection..ctor()
at Test.Database.UpdateSQLServerDatabase(IDictionary`2 fields, String regName, StringBuilder regCode)
at Test.Program.Run()
Type: System.TypeInitializationException
InnerException: 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.AppDomainSetup.get_ConfigurationFile()
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.GetConfigSection()
at System.Diagnostics.DiagnosticsConfiguration.Initialize()
at System.Diagnostics.Switch.InitializeConfigSettings()
at System.Diagnostics.Switch.InitializeWithStatus()
at System.Diagnostics.Switch.get_SwitchSetting()
at System.Diagnostics.TraceSwitch.get_Level()
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()
Даже конструктор без параметров дает исключение. Поэтому я не думаю, что проблема в строке подключения. Я вижу, что трассировка стека говорит что-то о "Недопустимых символах в пути". Поэтому я постараюсь развернуть и выяснить. Но, может быть, кто-то уже знает решение.