如何在运行时WCF中在app.config中编写端点信息?

时间:2009-07-10 07:35:45

标签: wcf

有没有办法在app.config文件中写入有关端点的信息? 实际上我想从一个app.config文件中读取<service>标签,并希望将其写在其他app.config文件的<Services>标签中。

请有人告诉我该怎么做?

实际上我有一个名为“WCFService.exe.config”的配置文件,我想在我的程序中阅读,所以我写的是:

string path = Path.Combine(Application.StartupPath, "WCFService.exe.config");
Configuration config = ConfigurationManager.OpenExeConfiguration(path)  

ServicesSection serviceSection = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection;

ServiceElementCollection sereleColl = serviceSection.Services;

但我在sereleColl中什么都没得到。

2 个答案:

答案 0 :(得分:3)

您的呼叫“OpenExeConfiguration” - 这将打开当前正在执行的应用程序的配置。

您需要阅读.NET 2.0配置系统:CodeProject上有一个关于.NET配置系统的优秀3部分系列:

有一系列非常好的文章可以揭开CodeProject上的.NET 2.0配置系统的神秘面纱:

  1. Unraveling the mysteries of .NET 2.0 configuration

  2. Decoding the mysteries of .NET 2.0 configuration

  3. Cracking the mysteries of .NET 2.0 configuration

  4. 强烈推荐! Jon Rista在.NET 2.0中解释配置系统做得很好。

答案 1 :(得分:2)

查看ConfigurationManager class

我不记得怎么做了。

修改

要访问它,您必须添加对System.Configuration的引用。

编辑2:

更改appsettings可以这样做:

Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
AppSettingsSection appSettings = config.AppSettings;
KeyValueConfigurationElement setting = appSettings.Settings["MyAppSettingsKey"];
setting.Value = "newValue";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

您可以输入以下内容来访问WCF设置:

ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];

希望这有帮助。

<强>注释:

您的代码在这里工作正常。但是,我改变了

string path = Path.Combine(Application.StartupPath, "WCFService.exe.config");

string path = Application.ExecutablePath;

这将使用当前运行的应用程序的配置文件。我不知道为什么你的道路不起作用。要么是这样,要么配置文件中一定有错误?