2011-12-15 493 views
12

更新app.config文件編程與使用ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)以編程方式更新app.config文件;

配置配置= ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

這是我的XML

<configuration> 
    <configSections> 
    <section name="nhibernateSettings" type="ProjectBase.Data.OpenSessionInViewSection, ProjectBase.Data" /> 
    </configSections> 
    <appSettings> 
    <add key="NHibernateConfigPath" value="D:\PROJEKTI\crawler\WebCrawlerSuite\ViaMura.Web\NHibernate.config" /> 
    <!--<add key="NHibernateConfigPath" value="C:\_ZAGON\ViaMura\CurrencyApp\at\NHibernate.config" />--> 
    <add key="ClientSettingsProvider.ServiceUri" value="" /> 
    </appSettings> 
    <connectionStrings> 
    <add name="connectionString" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Viamura_at;Data Source=.\SQL2008" providerName="System.Data.SqlClient" /> 
    <!--<add name="connectionString" connectionString="server=193.37.152.24\SQL2008;User Id=DBUser;password=Lualah8991;database=Viamura_at" providerName="System.Data.SqlClient" />--> 
    </connectionStrings> 
    <nhibernateSettings> 
    <!-- List every session factory that will be needed; transaction management and closing sessions 
      will be managed with the open-session-in-view module --> 
    <sessionFactories> 
     <clearFactories /> 
     <sessionFactory name="WebCrawlerFactory" factoryConfigPath="D:\PROJEKTI\crawler\WebCrawlerSuite\ViaMura.Web\NHibernate.config" isTransactional="true" /> 
     <!--<sessionFactory name="WebCrawlerFactory" factoryConfigPath="C:\_ZAGON\ViaMura\CurrencyApp\at\NHibernate.config" isTransactional="true" />--> 
    </sessionFactories> 
    </nhibernateSettings> 

我如何編程編輯WebCrawlerFactory?我正在使用

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

+0

您可以使用XPATH做到這一點,我做n沒有一個例子在這裏,但我已經做了這個使用XPATH更新我的web.config文件中的部分做一個谷歌搜索更新配置部分使用XPATH C# – MethodMan 2011-12-15 16:11:09

+0

東西是這樣的:http://patelshailesh.com/index.php/update -web-config-programmatically – senzacionale 2011-12-15 16:38:22

+0

看看我的例子我發佈了一個正確的repsonse爲以前的用戶.. [changeConfigFile運行時](http://stackoverflow.com/questions/8130085/opening-the-machine-base- web-config-64bit-through-code/8142160#8142160) – MethodMan 2011-12-15 17:43:40

回答

1

ProjectBase.Data.OpenSessionInViewSection指示已經定義了一個自定義配置部分,允許訪問配置設置。但它可能受NHibernate保護或內部。

看看你是否可以引用該類訪問設置。

你也可以自己創建一個自定義配置部分,但是它會導致NHibernate配置不當,因爲它不能正確加載配置部分。

看到How to: Create Custom Configuration Sections Using ConfigurationSection

27

您可以使用下面的代碼:

private void UpdateConfig(string key, string value, string fileName) 
{ 
    var configFile = ConfigurationManager.OpenExeConfiguration(fileName); 
    configFile.AppSettings.Settings[key].Value = value; 

    configFile.Save(); 
} 

其中:filename是完整路徑+應用程序名稱(C:\項目\ application.exe)

在你情況下,更改應用程序設置的部分:

configFile.Sections["nhibernateSettings"]