0

我正在尝试以编程方式修改 WCF 行为(即修改配置文件部分)。

BehaviorsSection  bhsSection = (BehaviorsSection)this.configFile.GetSection("system.serviceModel/behaviors");

检索该部分后,我希望能够更新/修改该serviceMetadata部分并保存文件。

加载该部分后如何继续操作的任何想法?我无法找到可以投射和更改值的对象。

4

1 回答 1

1

下面是一些示例代码,用于打开当前正在执行的应用程序的配置文件并修改 serviceMetadata 元素。

static void FindServiceMetadata()
{
  var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location);
  var sg = ServiceModelSectionGroup.GetSectionGroup(config);
  foreach (ServiceBehaviorElement behavior in sg.Behaviors.ServiceBehaviors)
  {
    foreach (var item in behavior)
    {
      var metadata = item as ServiceMetadataPublishingElement;
      if (metadata == null) continue;
      metadata.HttpsGetEnabled = true;
    }
  }
  config.Save();
}

这假定一个配置文件包含一个 system.serviceModel 部分,如下所示:

 <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="test">
          <serviceMetadata />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
于 2012-12-06T21:42:24.537 回答