C#更改Web引用URL

时间:2014-07-14 20:46:52

标签: c# dynamic web-config web-reference

我正在尝试根据网站是否有效来更改网络参考路径。

应用程序设置位于web.config

<applicationSettings>
<WebReferenceName.Properties.Settings>
  <setting name="WebReferenceName_Service_TBService"
    serializeAs="String">
    <value>http://localhost:50711/Service.svc</value>
  </setting>
</WebReferenceName.Properties.Settings>

我尝试了以下内容:

Properties.Settings.Default.WebReferenceName_Service_TBService.Equals("http://www.newurl.com/service.svc");

虽然没有错误,但稍后再检查,表明它没有改变。

var config = WebConfigurationManager.OpenWebConfiguration("~/web.config");
config.AppSettings["WebReferenceName_Service_TBService"] = "http://www.newurl2.com/service.svc";
config.Save(); 

但是这个错误说我没有权限

还有另一种方法吗?

我宁愿不必在整个地方使用if语句,因为我的类型命名空间不同。 e.g。

using (var service = new WebServiceLocal.TheWebServiceService())
{
     WebServiceLocal.blah();
}

由于

1 个答案:

答案 0 :(得分:1)

执行此操作的首选方法是使用config transformations。因此,您的默认web.config将包含:

<applicationSettings>
    <WebReferenceName.Properties.Settings>
        <setting name="WebReferenceName_Service_TBService" serializeAs="String">
            <value>http://localhost:50711/Service.svc</value>
        </setting>
    </WebReferenceName.Properties.Settings>
</applicationSettings>

在你的变换中,你会有这样的东西(注意xdt:Transform="Replace"):

<applicationSettings>
    <WebReferenceName.Properties.Settings>
        <setting name="WebReferenceName_Service_TBService" serializeAs="String">
            <value xdt:Transform="Replace">http://www.newurl2.com/service.svc</value>
        </setting>
    </WebReferenceName.Properties.Settings>
</applicationSettings>

需要注意的是,如果您正在为app.config执行类似操作(而不是web.config),则需要安装类似SlowCheetah的插件。