写入配置文件问题

时间:2010-09-07 17:22:25

标签: c# configuration-files


这段代码工作正常,我的配置文件也能正确更改。

    //Local Variable Declaration
System.Configuration.Configuration oConfig =
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(
    Request.ApplicationPath);

if (oConfig .AppSettings.Settings["CompanyName"] == null)
{
    oConfig AppSettings.Settings.Add("CompanyName", "MyCompanyName");
    oConfig .Save();
}

但是当我想为此目的使用属性时,在配置文件中没有任何事情发生。

//财产声明

private System.Configuration.Configuration _oRootConfig;

public System.Configuration.Configuration oRootConfig
{
   get
   {
       return
           System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(
           Request.ApplicationPath);           

   }
   set { _oRootConfig = value; }
}

if (oRootConfig.AppSettings.Settings["CompanyName"] == null)
{
   oRootConfig.AppSettings.Settings.Add("CompanyName", "MyCompanyName");
   oRootConfig.Save(System.Configuration.ConfigurationSaveMode.Modified, true);
}

现在我有两个问题:
1 - 为什么这段代码不起作用,那里 没有错误。
2 - 如果我想以面向对象编程 方式,我该怎么做来修复这个属性 如果问题与财产有关。 感谢

2 个答案:

答案 0 :(得分:2)

您将在每次获取时重新打开配置,而是执行此操作:

get
{
    if(this._oRootConfig == null)
        this._oRootConfig = (System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath));
    return this._oRootConfig;
}

答案 1 :(得分:1)

这行代码:

get 
{ 
return  (System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath)); 
}

set { _oRootConfig = value; }

你没有在你的get中设置_oRootConfig。你需要这个代码:

get
{
     _oRootConfig = (System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath));
     return _oRootConfig;
}

set
{
     _oRootConfig = value;
}