以编程方式在配置文件中创建/编辑WCF部分

时间:2014-05-27 13:02:27

标签: c# wcf wcf-configuration

如何以编程方式在配置文件中创建/编辑WCF部分? 我知道怎么读。但是当您尝试更改配置时,请收到错误:

string pathToProg = @ "C: \ Proj \ WCF_Config \ ConsoleApplication1 \ bin \ Debug \Test.config";
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = pathToProg;

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
ClientSection clientSection = ConfigurationManager.GetSection("system.serviceModel/client") as ClientSection;           

// Exception: "The configuration is read only."
clientSection.Endpoints.Add(new ChannelEndpointElement(new EndpointAddress(@"http://1.1.1.1:1/HL7"), "Server.Message"));

我的最终目标 - 以编程方式从头开始(和编辑)创建具有设置WCF的配置文件。如果您知道这是如何解决的,请告诉我。 这对我们的维护部门来说是必要的,因为他们发现很难直接编辑配置文件(Ip,绑定等)。

UPD。 现在专门删除整个目录复选框“只读”。

没有任何改变。

您可以执行此代码吗?这很容易 - 您只需在配置文件部分中获得带有相关数据的“system.servismodel”。

PS。我认为这个问题: ClientSection clientSection = ConfigurationManager.GetSection(“system.serviceModel / client”)作为ClientSection; clientSection.Endpoints.IsReadOnly - 返回true。

机会我的决定从根本上是错误的。该集合原则上不可编辑。

如何纠正?我希望有人已经面临创建以编程方式配置文件的需要。

3 个答案:

答案 0 :(得分:0)

  

要获取资源的Configuration对象,您的代码必须对其继承设置的所有配置文件具有读取权限。要更新配置文件,您的代码还必须具有配置文件及其所在目录的写权限。

http://msdn.microsoft.com/en-us/library/ms134269(v=vs.110).aspx

您是否具有对配置文件和包含该文件的目录的读/写权限?

答案 1 :(得分:0)

您可以尝试this guide - Writing WCF config files programmatically and dynamically。它似乎正是您正在寻找的。

答案 2 :(得分:0)

这是一个质朴的解决方案,但它适用于我。我希望你能发现它有用

var document = new ConfigXmlDocument();
        document.Load(@"C:\Users\Admin\Desktop\App.config");
        var xmlAttributeCollection = document.GetElementsByTagName("endpoint")[0].Attributes;
        if (xmlAttributeCollection != null)
            xmlAttributeCollection.GetNamedItem("address").Value = "http://My_New_Uri.com";
        document.Save(@"C:\Users\Admin\Desktop\App.config");