SqlConnection抛出异常

Sla*_*ava 4 .net c# sql-server

亲爱的专业人士请帮助我解决以下问题.在我的.NET C#应用程序中,有一个代码:

SqlConnection connection = new SqlConnection( SQLCONNECTION_STRING );
Run Code Online (Sandbox Code Playgroud)

它在我的开发机器上运行得非常好,但在Windows 2003服务器上抛出异常.该应用程序通过CGI运行并具有"完全信任"级别.我已经尝试了几个连接字符串,我认为字符串不会导致问题,因为即使这个代码也会出现异常:

SqlConnection connection = new SqlConnection();
Run Code Online (Sandbox Code Playgroud)

谢谢.


我发现了两个奇怪的事实:

  1. 如果我将调试器连接到进程并简单跟踪代码,它就可以工作.
  2. 如果我从命令行运行应用程序(不是根据需要通过CGI),它可以工作.

所以我猜CGI和SqlConnection交互有问题.有人知道吗?

谢谢大家的回复.


编辑添加:

这是我的连接字符串:"Provider = SQLOLEDB; Data Source =(local); Initial Catalog = Users; User Id = user; Password = password;"

我还尝试了几种可能的变体,如: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()
Run Code Online (Sandbox Code Playgroud)

即使是无参数构造函数也会出现异常.所以我不认为问题出在连接字符串中.我可以看到堆栈跟踪讲述了"路径中的非法字符".所以我会尝试深入了解并找出答案.但也许有人已经知道解决方案.

小智 8

此问题通常与配置文件中的问题有关.您可能想要重新创建它.

谢谢,Jivtesh