[英]ConfigurationManager throwing null exception when trying to read connection string in .NET 4.0
[英]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中的這個問題。 請看一看...
我想你只需要調整你如何獲取你的ConnectionString
。
using (iDB2Connection cn = new iDB2Connection(ConfigurationManager.ConnectionStrings["iseries"].ConnectionString)
{
//get the data and return them
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.