例外:为'system.data.sqlclient.sqlconnection'输入初始值设定项?

时间:2011-08-03 07:13:38

标签: c# linq wcf exception sqlclient

我无法弄清楚此异常的问题是什么。

  

'System.Data.SqlClient.SqlConnection'的类型初始值设定项引发了异常

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

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

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

单击Debug error会将我引导至linq文件的连接字符串。

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

谢谢

12 个答案:

答案 0 :(得分:27)

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

答案 1 :(得分:1)

当我重新打开我的项目时,我也遇到了这个异常。在我的例子中,Config文件有空标记和密钥,如下所示。我删除了appSettings标记以解决问题。

  

< ?xml version =“1.0”encoding =“utf-8”?>

     

<结构>

     

<强>&LT;的appSettings&GT;

     
    

<强>&LT; add key =“”value =“site”/&gt;

  
     

<强>&LT; /&的appSettings GT;

     

&LT; configSections&GT;

     

&LT; / configSections&GT;

     

&LT; /结构&gt;

答案 2 :(得分:1)

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

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

它解决了我的问题。

答案 3 :(得分:1)

在我的情况下,问题是错误地修改了 app.config 文件中的标记名称 只需将您的app.config文件与另一个旧文件进行比较..您将找到问题所在 ...

答案 4 :(得分:1)

删除app.config,然后运行程序

答案 5 :(得分:1)

如果您的项目包含用于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程序包。

答案 6 :(得分: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”]是最重要的。

答案 7 :(得分:0)

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

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

&#39; System.Data.SqlClient.SqlConnection&#39;的类型初始值设定项。抛出异常

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

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

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

顺便说一下,我们检查了app.configweb.config,这些都很好(并且与其他用户完美配合)。

另一个发现:

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

所以...我们现在卡住了。

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

我在代码中添加了一大堆try..catch,并发现在这一行代码中出现异常:

MikesDataContext dc = new MikesDataContext()

因此,它实际上是进行连接会抛出异常。它没有达到使用此连接的下一行代码。

答案 8 :(得分:0)

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

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

TL; DR:检查您的用户权限!希望这对某人有帮助,我花了3天的时间试图弄清楚这一点。

答案 9 :(得分:0)

与上述解决方案类似的解决方案,但就我而言,这是 需要删除的app.config中的 applicationSettings 标记。

答案 10 :(得分:0)

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

<connectionStrings>
your connection strings
</connectionStrings> 

答案 11 :(得分:0)

我已经在可以正常运行几个月但突然停止工作的程序上遇到了这个问题。 我发现每次都可以使用的解决方案是将其作为您Main()中的第一个调用。

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