SqlConnection выдает исключение

Уважаемые специалисты, пожалуйста, помогите мне решить следующую проблему. В моем приложении .NET C # есть такой код:

SqlConnection connection = new SqlConnection( SQLCONNECTION_STRING );

Он отлично работает на моей машине для разработки, но создает исключение на сервере Windows 2003. Приложение работает через CGI и имеет уровень «Полное доверие». Я пробовал несколько строк подключения, и я думаю, что строка не вызывает проблемы, потому что даже этот код получает исключение:

SqlConnection connection = new SqlConnection();

Спасибо.


Я нашел два странных факта:

  1. Это работает, если я подключаю отладчик к процессу и просто отслеживаю код.
  2. Это работает, если я запускаю приложение из командной строки (не через 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()

Даже без параметров конструктор дает исключение. Поэтому я не думаю, что проблема в строке подключения. Я вижу, что трассировка стека говорит что-то о "Недопустимых символах в пути". Поэтому я постараюсь развернуть и выяснить. Но, возможно, кто-то уже знает решение.

13.10.2009 10:53:09
Какое исключение выбрасывается? Что говорит исключение?
Frederik Gheysels 13.10.2009 10:55:32
abd как выглядит ваша строка подключения ??
marc_s 13.10.2009 11:00:51
7 ОТВЕТОВ

Попробуйте следующее:

string str="Data Source=[YourServer];Initial Catalog=yourdb;User ID=sa;Password=sa;";
SqlConnection connection = new SqlConnection(str);
0
13.10.2009 12:47:21

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

Спасибо дживтеш

8
23.10.2009 18:26:25
Эта проблема для меня была определенно проблемой конфигурации. Я установил олицетворение на обязательный для всех вызовов функций (через serviceAuthorization / impersonateCallerForAllOperations = "true", а также OperationBehavior для каждого метода), а затем проверял с помощью вызова, который не использовал олицетворение. Простое использование тестового клиента WCF или неправильно настроенного тега system.serviceModel, для которого не было установлено значение windows / allowImpersonationLevel = "Impersonation", приведет к точной ошибке при попытке открыть соединение SQL.
cl0rkster 19.02.2016 18:31:57

Для меня это была неверная настройка трассировки web.config, у меня была ошибка

System.Diagnostincs.TextWriterTraceListener

вместо

System.Diagnostics.TextWriterTraceListener

а также имел два элемента трассировки ... решение этих двух проблем решило мою проблему.

0
1.03.2011 17:15:40

У меня была эта проблема, когда я app.configвключил пустой раздел строки подключения, вот так;

<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
    </connectionStrings>
</configuration>

Судя по всему, у вас есть версия, которая работает как консольное приложение, так и веб-приложение. Это означает, что у вас будет приложение app.configдля консоли и web.configсайт asp.net.

Поскольку у вас есть работающее консольное приложение, попробуйте найти различия между эквивалентными разделами и обновить их, web.configчтобы они соответствовали вашим app.config.

Кроме того, вы могли бы рассмотреть различные разрешения, присущие системе - веб-сайт может не иметь разрешения для подключения к базе данных, потому что он работает как IUSR_<machinename>, но приложение консоли работает под вашими учетными данными пользователя, и вы, вероятно, машина администратор.

2
13.12.2011 13:23:13
я попытался у меня есть форма win и Crystal Report, он добавил конфигурацию приложения автоматически, если я удаляю конфигурацию приложения, мой отчет не работает, если я включаю, моя строка подключения показывает ошибку, я добавил пустую строку, как показано, но все еще ошибка
office 302 21.12.2015 10:33:36

Если доступ к службе возможен из браузера, проверьте конфигурацию поведения конечной точки на стороне клиента следующим образом:

<endpointBehaviors>
        <behavior name="clientEndpoint">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <clientCredentials>
            <windows allowedImpersonationLevel="Delegation"/>
          </clientCredentials>
        </behavior>
</endpointBehaviors>
0
28.11.2016 21:47:57

Ошибка, SqlConnection connection = new SqlConnection();выданная в, является правильной, но это происходит из-за ошибки в App.Config, сообщение об ошибке вводит в заблуждение.

0
31.10.2012 09:01:46

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

0
18.02.2015 06:45:20