如何使您的服务参考代理URL动态化?

时间:2011-09-27 15:46:27

标签: c# wcf wcf-client

我有网络服务的网络参考:

using (var client = new GetTemplateParamSoapClient("GetTemplateParamSoap"))
{
    TemplateParamsKeyValue[] responsArray = client.GetTemplatesParamsPerId(
        CtId, tempalteIds.ToArray());

    foreach (var pair in responsArray)
    {
        string value = FetchTemplateValue(pair.Key, pair.Value);
        TemplateComponentsData.Add(pair.Key, value);
    }
}

尝试从c#代码更改网络引用网址:作为建议:

1)http://www.codeproject.com/KB/XML/wsdldynamicurl.aspx

2)How to call a web service with a configurable URL

3)http://aspalliance.com/283_Setting_Web_Service_References_Dynamically

但是在尝试做的时候我得到了符号:

client.Url

另外我找不到“Url_behavior”的属性

1 个答案:

答案 0 :(得分:6)

听起来您已经添加了服务参考,但这是adding, updating and removing service references的演练。

一旦你在项目中得到了其中一个,就可以使用其中一个构造函数重载来改变端点URI,正如John Saunders上面所说的那样。为此,您需要知道配置文件中端点的名称。例如,在添加服务后,您的配置文件中可能包含以下元素:

<endpoint address="http://bleh.com/services/servicename.asmx"
    binding="basicHttpBinding" bindingConfiguration="ServiceNameSoap"
    contract="ServiceReference1.ServiceNameSoap" name="ServiceNameSoap" />

鉴于该端点,您可以使用以下重载在运行时更改address

var proxy = new ServiceReference1.ServiceNameSoapClient("ServiceNameSoap",
    "http://new-address.com/services/servicename.asmx");

您也可以在施工后进行,但这会变得有点困难。如果您需要这样做,请参阅Endpoint属性和相关类型ServiceEndpoint上的文档。