2011-11-15 61 views
-1

我編寫了一個C#項目,我配置app.config文件如下:ConfigurationManager中功能錯誤

<appSettings> 
    <add key="smUserName" value= "XXX"/> 
    <add key="smPassword" value= "XXX"/> 
</appSettings> 

但我不能從app.config中獲得smUserNamesmPassword值:

using System.Configuration; 

// more code snipped... 

public static string smUserName = ConfigurationManager.AppSettings.Get("smUserName").ToString(); 
public static string smPassword = ConfigurationManager.AppSettings.Get("smPassword").ToString(); 

儘管存在using System.Configuration語句,但編譯此代碼時出現錯誤「名稱'ConfigurationManager'在當前上下文中不存在」。

+0

嘗試'ConfigurationManager.AppSettings [ 「smUserName」]'和'ConfigurationManager.AppSettings [ 「smPassword」]'你得到 –

+0

哪些錯誤?運行時錯誤,或項目不能編譯? –

+0

錯誤是什麼,它很可能是錯誤告訴你什麼是問題! –

回答

4

如果問題是代碼不能編譯,請嘗試添加對該代碼的引用System.Configuration裝配。

+0

謝謝你的幫助。我添加了參考,並解決了問題。但首先我編碼,我使用Syste.Configuration添加,但不添加爲什麼? – brsvdn

+0

@brsvdn:添加使用語句和裝配參考是兩種完全不同的事情。當添加使用語句時,不會自動添加程序集引用(可以在多個程序集中使用相同的名稱空間)。 –

0

你應該寫你這樣的代碼在C#

public static string smUserName = ConfigurationSettings.AppSettings["smUserName"]; 
public static string smPassword = ConfigurationSettings.AppSettings["smPassword"]; 

而且還添加了一個參考System.Configuration

編輯:

您也可以嘗試像如下

try 
{ 
    AppSettingsSection appSettings = 
     config.AppSettings as AppSettingsSection; 
    Console.WriteLine("Section name: {0}", 
      appSettings.SectionInformation.SectionName); 

    // Get the AppSettings section elements. 
    Console.WriteLine(); 
    Console.WriteLine("Using AppSettings property."); 
    Console.WriteLine("Application settings:"); 
    // Get the KeyValueConfigurationCollection 
    // from the configuration. 
    KeyValueConfigurationCollection settings = 
     config.AppSettings.Settings; 

    // Display each KeyValueConfigurationElement. 
    foreach (KeyValueConfigurationElement keyValueElement in settings) 
    { 
     Console.WriteLine("Key: {0}", keyValueElement.Key); 
     Console.WriteLine("Value: {0}", keyValueElement.Value); 
     Console.WriteLine(); 
    } 
} 
catch (ConfigurationErrorsException e) 
{ 
    Console.WriteLine("Using AppSettings property: {0}", 
     e.ToString()); 
} 
+0

我總是使用索引爲好,但它不應該等同於獲取? –

+0

ConfigurationSettings.AppSettings已過時並已被ConfigurationManager.AppSettings取代。 –

+0

@PaoloTedesco,是的,它的確相當於get方法。 –

1

什麼錯誤給你?

您也可以嘗試這個:

System.Configuration.AppSettingsReader reader; 
public static string smPassword = reader.GetValue("smUserName", typeof(string)).ToString(); 

編輯

如果你的錯誤是

錯誤是「 'ConfigurationManager中' 這個名字在 不存在當前上下文「

如註釋中所述,您需要將對System.Configuration的引用添加到您的項目中。

0
using System.Configuration; 
// all other using as required. 

public partial class Admin_UserControls_GridDisplay : System.Web.UI.UserControl 
{ 
    public static string smUserName = ConfigurationManager.AppSettings["smUserName"].ToString(); 
    public static string smPassword= ConfigurationManager.AppSettings["smPassword"].ToString(); 
} 

如果代碼不起作用添加對網站的引用,希望它是您嘗試訪問配置管理器的網站頁面。