我试图以编程方式修改WCF行为(即修改配置文件部分)。
BehaviorsSection bhsSection = (BehaviorsSection)this.configFile.GetSection("system.serviceModel/behaviors");
在检索该部分后,我希望能够更新/修改serviceMetadata
部分并保存文件。
在我加载该部分后如何处理的任何想法?我无法找到可以投射的对象并更改值。
答案 0 :(得分: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>