修改WCF客户端代理的端点地址

时间:2011-01-08 06:28:35

标签: silverlight wcf wcf-client

当我使用服务引用从Silverlight进行Web服务调用时,有没有办法让(生成的)SoapClient对象修改他们称之为服务的地址?

具体来说,我想将QueryString值添加到服务所做的每个调用上。所以,如果我有

DataService.SilverlightServiceSoapClient C = new DataService.SilverlightServiceSoapClient();

有没有办法做类似的事情:

C.Address += "?Foo=Bar";

从我的WebMethod中,我可以说:

HttpContext.Current.Request.QueryString["foo"];

显然我可以修改我的WebMethods以将此值作为参数,但我希望尽可能避免这样做。

2 个答案:

答案 0 :(得分:2)

由于您已经在使用服务引用,因此您可以简单地使用接受EndpointAddress作为参数的代理类构造函数的重载。或者,您可以创建多个端点配置,并让代码只使用所选的配置 - 可能包括URL更改。

请参阅MSDN上的Understanding Generated Client Code

答案 1 :(得分:0)

看起来最好的方法是使用其中一个重载的构造函数并自己提供uri

C = new DataService.SilverlightServiceSoapClient(new BasicHttpBinding(), new System.ServiceModel.EndpointAddress("http://blah/blah/blah/SilverlightService.asmx?Foo=Bar"));