Silverlight 修改WCF客户端代理的端点地址
当我使用服务引用从Silverlight进行web服务调用时,有没有办法让(生成的)SoapClient对象修改它们调用服务的地址 具体地说,我想在服务进行的每个调用上附加一个QueryString值。所以如果我有Silverlight 修改WCF客户端代理的端点地址,silverlight,wcf,wcf-client,Silverlight,Wcf,Wcf Client,当我使用服务引用从Silverlight进行web服务调用时,有没有办法让(生成的)SoapClient对象修改它们调用服务的地址 具体地说,我想在服务进行的每个调用上附加一个QueryString值。所以如果我有 DataService.SilverlightServiceSoapClient C=newdataservice.SilverlightServiceSoapClient() 有没有什么方法可以做到: C.Address += "?Foo=Bar"; 通过我的WebMethod,
DataService.SilverlightServiceSoapClient C=newdataservice.SilverlightServiceSoapClient()代码>
有没有什么方法可以做到:
C.Address += "?Foo=Bar";
通过我的WebMethod,我可以说:
HttpContext.Current.Request.QueryString[“foo”]代码>
显然,我可以修改我的WebMethods以将该值作为参数,但如果可能的话,我希望避免这样做。因为您已经在使用服务引用,所以可以简单地使用代理类构造函数的重载,该构造函数接受EndpointAddress作为参数。或者,您可以创建多个端点配置,让代码只使用所选的配置,其中可能包括URL更改
请参见MSDN上的。完成此操作的最佳方法似乎是只使用一个重载构造函数并自己提供uri
C = new DataService.SilverlightServiceSoapClient(new BasicHttpBinding(), new System.ServiceModel.EndpointAddress("http://blah/blah/blah/SilverlightService.asmx?Foo=Bar"));
谢谢你的回答,但我想我问得不是很清楚。我使用服务引用调用asmx,生成的代理没有Uri属性。它确实具有属性C.Endpoint.Address.Uri,但尝试修改该属性时失败。抱歉。清楚通常是我不擅长的事情。我认为问题在于我认为从Silverlight调用asmx服务的唯一方法是使用服务引用。你还能怎么做?@Adam:我们这些不编程Silverlight的人都不知道。当然,把Uri存储在智能的地方,这样它就不只是硬编码到你的构造函数中了。。。