C# 使用ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)以编程方式更新app.config文件;
使用以编程方式更新app.config文件 配置配置= ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 这是我的xmlC# 使用ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)以编程方式更新app.config文件;,c#,C#,使用以编程方式更新app.config文件 配置配置= ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 这是我的xml <configuration> <configSections> <section name="nhibernateSettings" type="ProjectBase.Data.OpenSessionInViewSection, Proje
<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?我正在使用
配置配置=
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
ProjectBase.Data.OpenSessionInViewSection表示已经定义了一个自定义配置节,允许访问配置设置。然而,它可能受到保护,或在NHibernate内部 查看是否可以引用该类来访问设置 您也可以自己创建一个自定义配置节,但是这会导致NHibernate配置不正确,因为它无法正确加载配置节
请参见您可以使用以下代码:
private void UpdateConfig(string key, string value, string fileName)
{
var configFile = ConfigurationManager.OpenExeConfiguration(fileName);
configFile.AppSettings.Settings[key].Value = value;
configFile.Save();
}
其中:fileName是完整路径+应用程序名(c:\project\application.exe)
在您的情况下,请按部分更改应用程序设置:
configFile.Sections["nhibernateSettings"]
您可以使用XPATH来实现这一点,我这里没有示例,但我使用XPATH来更新web.config文件中的部分。使用XPATH C#在谷歌上搜索更新配置部分,类似这样的内容:看看我的示例,我已经为以前的用户发布了正确的repsonse。。它实际上看起来像ProjectBase.Data.OpenSessionInViewSection与NHibernte无关。话虽如此,我认为它不会干扰NHibernate。我得到了以下错误:System.NullReferenceException:“对象引用未设置为对象的实例。”fileName=System.Reflection.Assembly.GetEntryAssembly().Location;//完整路径+应用程序名