簡體   English   中英

UserControl中的ConfigurationManager連接字符串為null

[英]ConfigurationManager connection string is null in UserControl

我有一個應用程序通過數據層獲取數據到表單,使用這樣的東西:

public DataTable get(String query, ArrayList parameters = null)
{            
   using (iDB2Connection cn =  new iDB2Connection(ConfigurationManager.ConnectionStrings["iseries"].ToString()))
   {
       // get the data and return them    
   }
}

我有獲取數據的表單,這很好。

但是,我創建了一個UserControl,它通過這個方法獲取數據,當我運行我的項目時工作正常,但是,包含UserControl的表單會引發設計器異常。

“為了防止在加載設計器之前可能丟失數據,必須解決以下錯誤:”

我發現錯誤位於從<appSettings>檢索連接字符串時。

它會拋出nullpointerexception。

但僅限於設計模式。 當我忽略它時,一切正常,但是,我想知道如何解決這個問題。

通過我的UserControl訪問它們時,為什么我的<appSettings> null?

更新1

似乎我的UserControl根本無法識別<appSettings>

當我將此代碼放入UserControl Load事件時,我也得到了一個null引用。

private void SelectUser_Load(object sender, EventArgs e)
{            
   txtLocation.Text = ConfigurationManager.AppSettings["location"].ToString();
}

我找到了解決方案,在designmode中,usercontrol已經在Load-event中執行代碼。 由於App.config在designmode中不可用,因此未找到它,因此未加載。 所以我做了一些檢查,檢查是否在designmode:

bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
if (designMode)
{
    string location = ConfigurationManager.AppSettings["location"].ToString();
}  

下面的文章描述了WPF / Win Forms中的這個問題。 請看一看...

MS論壇

我想你只需要調整你如何獲取你的ConnectionString

using (iDB2Connection cn =  new iDB2Connection(ConfigurationManager.ConnectionStrings["iseries"].ConnectionString)
{
    //get the data and return them    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM