使用C#(MVC)以编程方式更新web.config applicationSettings

时间:2012-08-30 07:38:29

标签: c# asp.net-mvc-3 web-services web-config

我想在运行时更新web.config applicationSettings中的Web引用Url

这是web配置应用程序设置

<applicationSettings>
<ItineraryBuilder.Properties.Settings>
  <setting name="ItineraryBuilder_SchedulesConnectionsService_SchedulesConnectionsService"
    serializeAs="String">
    <value>http://www.pathfinder-xml.com/soap/*/services/SchedulesConnections</value>
  </setting>
  <setting name="ItineraryBuilder_SalesForceService_SforceService"
    serializeAs="String">
    <value>https://login.salesforce.com/services/Soap/c/25.0/0DFd00000000Wa6</value>
  </setting>
  <setting name="ItineraryBuilder_OAGService_CBWSPublicService"
    serializeAs="String">
    <value>http://ondemand.oag.com:80/CBWebServicePublic/CBWSPubliclPort</value>
  </setting>
</ItineraryBuilder.Properties.Settings>
</applicationSettings>

这是我用来更新的代码

var configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
var section = (System.Configuration.ClientSettingsSection)configuration.GetSection("applicationSettings/ItineraryBuilder.Properties.Settings");

System.Configuration.SettingValueElement sv = new System.Configuration.SettingValueElement();
sv.Equals("https://test.salesforce.com/services/Soap/c/25.0/0DFd00000000Wa6");
section.Settings.Get("ItineraryBuilder_SalesForceService_SforceService").Value = sv;
configuration.Save();

但它不会更新Value,而是从设置中删除Value标记

之前我曾尝试更新网站服务网址,但没有工作,所以我按照这种方法,请指导我如何更新网页服务网址?

这就是我正在做的事情

SforceService sf = new SforceService();
sf.Url = "test.salesforce.com/services/Soap/c/25.0/0DFd00000000Wa6";;

请帮忙。

2 个答案:

答案 0 :(得分:2)

不要这样做。

具体来说,人们希望您的Web应用程序根文件夹不能被应用程序池标识写入。

答案 1 :(得分:1)

感谢Amiram Korach为您提供所有帮助

在他的帮助下,我得到了我做错的事。

正如他所说,不需要更新Web配置,因为它不是一个好方法,因此上述问题的解决方案是在运行时更新Web引用,因此以下代码工作正常

SforceService sf = new SforceService();
sf.Url = "test.salesforce.com/services/Soap/c/25.0/0DFd00000000Wa6"

我做错了什么,&#34; sf&#34;未传递给用于创建连接的API类。 Amiram Korach帮助我找到了这个问题。

再次感谢。