C# 讀取app.config配置文件 節點鍵值,提示 "System.TypeInitializationException 類型初始值設定項引發異常" 錯誤的解決方案

解決方案一
新建C#項目,在app.config中添加了appSettings項,運行時出現”配置系統未能初始化”的錯誤,MSDN裏寫到,如果配置文件中包含 configSections 元素,則 configSections 元素必須是 configuration 元素的第一個子元素。”,將自己添加的appSettings放到configSections 後,則正常。

解決方案二
在單元測試中出現了這個異常,原因是:
由於在測試項目中沒有添加配置文件(只有前臺網站項目中添加了 web.config)
//通過配置文件獲取連接字符串
public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings[“MyPetShopConnection”].ConnectionString;

public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int result = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return result;
}

    /// <summary>
    /// 輔助函數
    /// </summary>
    /// <param name="cmd">命令對象</param>
    /// <param name="conn">連接對象</param>
    /// <param name="trans">事務對象</param>
    /// <param name="cmdType">命令類型</param>
    /// <param name="cmdText">命令字符串</param>
    /// <param name="cmdParms">命令參數</param>
    private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
    {
        if(conn.State != ConnectionState.Open)
            conn.Open();

        cmd.Connection = conn;
        cmd.CommandText = cmdText;
        cmd.CommandType = cmdType;

        if (trans != null)
            cmd.Transaction = trans;

        if (cmdParms != null)
        {
            foreach (SqlParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
    }

// 解決方法:添加App.config

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章