2012-12-06 69 views
0

我试图修改编程WCF行为(即修改配置文件部分)。WCF修改配置文件

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

后,我找回我希望能够更新一节/修改serviceMetadata部分并保存文件。

任何关于如何在我加载该部分后继续的想法?我找不到可以投射并更改值的对象。

回答

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> 
+0

感谢斯科特奏效? – lihnid