13

我不知道这个异常有什么问题。

'System.Data.SqlClient.SqlConnection' 的类型初始化程序引发异常

第一次尝试:我正在使用 WCF 服务来制作一些小型应用程序。它工作得很好,我可以正确使用 LINQ。2或3天后。也许在我关闭 Visual Studio 并再次加载项目之后。出现异常。

第二次尝试也一样。我创建了另一个项目,它工作得很好,直到我做其他事情(我不更改任何代码)

SQL Server 工作正常,我可以毫无问题地通过 SQL Management Studio 连接。

单击调试错误将我引导至 linq 文件中的连接字符串。

可能是什么问题呢?我试图搜索但找不到解决此问题的答案。

谢谢

4

12 回答 12

30

这很可能意味着您的 app.config 文件中存在错误,例如格式错误的 XML 或意外元素。发生错误是因为 SqlConnection 中的静态字段从 app.config 读取以确定跟踪详细信息级别,如下所述:http: //msdn.microsoft.com/en-us/library/ms254503.aspx

于 2011-09-06T21:37:55.467 回答
3

如果您的项目包含适用于 Oracle 和 SQL Server 的 NuGet 包,此解决方案可能会帮助您修复此错误。

卸载这两个 NuGet 包:

  • Oracle.ManagedDataAccess.Core
  • System.Data.SqlClient

打开你的 app.config 并检查你是否仍然列出了任何依赖的程序集条目。如果这样做,请立即删除这些条目。它们可能看起来像这样:

<dependentAssembly>
    <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.19.1" newVersion="2.0.19.1" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="System.Data.SqlClient" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.1" newVersion="4.5.0.1" />
</dependentAssembly>

当仍在您的 app.config 文件中时,删除整个 Oracle 托管数据访问部分(如果存在)(这可能是解决此问题所需要做的唯一事情,但是我们执行了此解决方案中列出的所有步骤)。如果你有它,它可能看起来像这样:

<oracle.manageddataaccess.client>
    <version number="*">
      <settings>
          <!-- your TNS_ADMIN value would be located here -->
      </settings>
      <dataSources>
        <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
      </dataSources>
    </version>
</oracle.manageddataaccess.client>

打开 packages.config 文件并仔细检查以确保 Oracle 和 SQL Server 包的条目仍未列出 - 它们应该已消失,但 100% 确定并没有什么坏处。

保存您的项目,然后重新添加 NuGet 包。

于 2019-05-24T19:09:12.120 回答
1

就我而言,问题是错误地修改了app.config文件中的标签名称,只需将您的 app.config 文件与另一个旧文件进行比较即可。您会发现问题...

于 2015-03-28T12:36:42.393 回答
1

当我重新打开我的项目时,我也遇到过这个异常。在我的情况下,配置文件有空标签和键,如下所示。我删除了 appSettings 标签来解决问题。

< ?xml 版本="1.0" 编码="utf-8" ?>

<配置>

<应用设置>

<添加键=""值="站点"/>

< /应用设置>

<配置节>

</configSections>

</配置>

于 2012-07-05T10:00:44.160 回答
1

检查您是否安装了以下 Windows 修补程序 - KB2840628 - 用于 .NET FW 4.0(使用 Windows 控制面板->程序+功能并单击“查看已安装的更新”),如果是,请尝试卸载它...

https://connect.microsoft.com/VisualStudio/feedback/details/793500/sqlclr-typeinitializationexception-in-sqlconnection-since-kb2840628

它为我解决了这个问题。

于 2013-08-12T16:54:10.483 回答
1

删除 app.config 然后运行程序

于 2016-11-20T17:26:32.830 回答
1

我有同样的错误。我通过更改“app.config”找到了解决方案:

<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="O4E.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
    </sectionGroup>
  </configSections>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
  <applicationSettings>
    <O4E.Settings>
      <setting name="abc" serializeAs="String">
        <value>xyz</value>
      </setting>
    </O4E.Settings>
  </applicationSettings>
  <appSettings>
    <add key="" value=""/>
    <add key="" value=""/>
  </appSettings>
</configuration>

注意:行 [supportedRuntime version="v2.0.50727"] 是最重要的。

于 2019-07-17T07:56:44.007 回答
0

与上述解决方案类似的解决方案,但在我的情况下 ,需要删除 app.config 中的applicationSettings标记。

于 2019-06-03T09:13:01.120 回答
0

抱歉,对此问题的回复较晚,但在连续近 3 天调查此问题后,我想我会分享我的结果。HTTP 503 Service Unavailable在我的浏览器出现错误后,我在 SQL Server Reporting Services 中弹出了相同的错误,更具体地说是 Web 门户。

事实证明,该问题与运行 SSRS 实例的服务帐户和连接到数据库的帐户有关,在我的情况下,该帐户位于报告实例之外的另一台服务器上。我还不能准确指出问题出在配置和/或用户权限中的位置,即帐户在哪里需要提升权限。总而言之,根本问题似乎是我在其下运行门户网站代码的帐户没有足够的权限来调用 System.Data.SQLClient 类型。

TL;DR:检查您的用户权限!希望这对某人有所帮助,我花了 3 天的时间试图解决这个问题。

于 2018-09-20T11:45:47.240 回答
0

我在几个月内运行良好但突然停止工作的程序上遇到了这个问题。我发现每次都有效的修复方法是将其作为 Main() 中的第一个调用。

System.Configuration.ConfigurationManager.GetSection("system.xml/xmlReader");

于 2020-02-13T16:13:40.893 回答
0

我有同样的错误,问题出在 Web.config 中。就我而言,只需添加 connectionStrings 标记,它的值和问题就解决了。

<connectionStrings>
your connection strings
</connectionStrings> 
于 2020-02-07T07:46:29.150 回答
0

我已经阅读了很多有关此问题的信息,但没有人提到此错误的以下原因。

我们的一些用户使用旧版本的VMWare View Client,然后升级,现在看到了这个问题。

'System.Data.SqlClient.SqlConnection' 的类型初始化程序引发异常

  • 只安装旧版VMWare View Client的用户没有问题。
  • 只安装了新版VMWare View Client的用户没有问题。
  • 但是使用旧版本的VMWare View Client的用户现在已经升级了,确实有问题,即使我们卸载VMWare View Client,然后安装新版本,它仍然会继续。

我们确实尝试重新安装 .Net Framework 和 Visual Studio Tools for Office,但这并没有解决任何问题。

我们还没有找到修复程序,但我希望这可以帮助其他用户。

顺便说一句,我们确实检查了我们app.config的 ' 和web.config',这些都很好(并且可以与我们的其他用户完美配合)。

另一个发现:

  • 如果您的用户具有本地管理员权限,则升级VMWare View Client后不会出现此问题。
  • 如果他们没有本地管理员权限,则会出现此问题。

所以......我们现在被困住了。

我有一台测试笔记本电脑,每次当我的用户 ID 没有本地管理员权限时,我都可以重现该错误。如果我们随后授予本地管理员权限,然后我再次登录,错误就会消失。

而且我在我的代码中加了一堆try..catch,发现异常发生在这一行代码中:

MikesDataContext dc = new MikesDataContext()

因此,它实际上是在建立引发异常的连接。它没有达到使用此连接的下一行代码。

于 2016-04-25T07:50:09.347 回答