当我使用服务引用从Silverlight进行Web服务调用时,有没有办法让(生成的)SoapClient对象修改他们称之为服务的地址?
具体来说,我想将QueryString值添加到服务所做的每个调用上。所以,如果我有
DataService.SilverlightServiceSoapClient C = new DataService.SilverlightServiceSoapClient();
有没有办法做类似的事情:
C.Address += "?Foo=Bar";
从我的WebMethod中,我可以说:
HttpContext.Current.Request.QueryString["foo"];
显然我可以修改我的WebMethods以将此值作为参数,但我希望尽可能避免这样做。
答案 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"));