';的类型初始值设定项;System.Transactions.Diagnostics.DiagnosticTra

本文关键字:System Diagnostics DiagnosticTra Transactions 类型 | 更新日期: 2023-09-27 18:21:25

我需要帮助解决这个错误

这是错误{"The type initializer for 'System.Transactions.Diagnostics.DiagnosticTrace' threw an exception."}


我使用Access数据库和平台进行构建,配置为任意CPU。

有时代码运行得很好,有时它突然抛出这个异常。这里有很多类似的问题,但没有一个能解决我的错误

这是我的连接字符串

DbPath = @"d:'Ek.mdb";
ConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DbPath+";User Id=admin;Password=;";

这是我打开连接的功能
我在Con.Open() 上收到错误

public bool OpenConnection()
        {
            if (Con == null)
            {
                Con = new OleDbConnection(ConnectionString);
            }
            else if ((Con.State == ConnectionState.Broken || Con.State == ConnectionState.Closed) && (Con.State!=ConnectionState.Open))
            {
                Con.Open();
                Tx = Con.BeginTransaction(IsolationLevel.ReadCommitted);
                return true;
            }
            else if (IsConnectionBusy())
            {
                throw new DataException("Connection Busy");
            }
            return false;
        }

这就是我在执行查询后关闭连接的方式

public Boolean CloseConnection()
        {
            if(IsConnectionBusy())
                throw new DataException("Connection Busy");
            if (Con.State==ConnectionState.Open)
            {
                Tx.Commit();
                Con.Close();
                return true;
            }
            return false;
        }
public bool IsConnectionBusy()
    {
        switch (Con.State)
        {
            case ConnectionState.Connecting:
            case ConnectionState.Executing:
            case ConnectionState.Fetching:
                return true;
        }
        return false;
    }

我不明白为什么它有时运行得很完美,有时却抛出这个异常。
任何帮助都将不胜感激。为了解决这个错误,我尝试了太多,但都做不到

我注意到的是这一行

 else if ((Con.State == ConnectionState.Broken || Con.State == ConnectionState.Closed) && (Con.State!=ConnectionState.Open))


连接在closed state中。当它执行Con.Open()语句时,Connection状态变为Open,然后抛出此错误。
此外,在调试时也不会导致错误。只有当我没有在那个地方放一个breakpoint时,才会引起这种情况。
Con.Open(),当我第一次放置断点并在那里停留几秒钟时,就不会抛出错误。之后,如果我禁用断点并且没有抛出错误。。。!!!

';的类型初始值设定项;System.Transactions.Diagnostics.DiagnosticTra

我的App.Config文件有问题。

我删除了它,并从一个新项目中添加了一个新的,它为我修复了它。

我建议检查此异常的InnerException属性。

我也有同样的错误,即使我处于不寻常的情况下,我认为记录解决方案仍然很有用。

上下文:需要通过标准.NET连接器(MySql.Data)连接到MySql的简单控制台应用程序

上下文:我的app.config中的connectionStrings通过其configSource属性指向外部文件。现在,在.NET中,只有当外部配置文件位于同一目录或层次结构中较低的目录中,而不是较高的目录中时,才可以指向该文件。关键是,我的外部文件当然在层次结构中更高的目录中,所以我选择了另一种方式来读取我感兴趣的连接字符串,几天后又恢复了对该应用程序的工作,我不记得我的app.config坏了。

这就是问题所在,显然连接器(或其他一些ADO机制)解析app.config,即使您没有以编程方式访问它,也会发生此错误。我之所以能弄清楚,是因为我查看了InnerException,这就是我建议检查它的原因。

我在configuration节点下添加appSettings时开始出现此错误,该节点已经有configSections。。InnerException指出"每个配置文件只允许有一个configSections元素,如果存在,必须是根元素的第一个子元素。"所以我只是更改了配置节点序列。我的配置现在是这样的。

<configSections>
 <sectionGroup >
  <section name />
 </sectionGroup>
</configSections>
<appSettings>
 <add key="xxx" value="true"/>
</appSettings>

appSettings已在configSections之后移动。尽管场景似乎与该线程的创建者所面临的问题不同,但希望它能帮助到某人。。

将数据库更改为sqlite,一切都非常顺利
我认为Access数据库中的事务存在一些问题
通过更改数据库解决了此问题。但我仍然不确定是什么原因导致了那个奇怪的错误。

您能否使用以下两种方法打开和关闭Access数据库连接,并尝试在x86模式下构建程序,看看是否出现问题:

OleDbConnection _oleCon;
        public Form1()
        {
            InitializeComponent();
            _oleCon = new OleDbConnection();
        }
        bool OpenConnection()
        {
            try
            {
                string DbPath = @"D:'Ek.mdb";
                _oleCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + DbPath + ";";//ConfigurationSettings.AppSettings["dbConnectionString"];
                _oleCon.Open();
                return true;
            }
            catch
            {
                return false;
            }
        }
        bool CloseConnection()
        {
            try
            {
                _oleCon.Close();
                return true;
            }
            catch
            {
                return false;
            }
        }

从app.config中删除空白……这对我来说很好…

我更新了NuGet包,这似乎解决了我连接到本地SQLite数据库的问题。