Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 修改WCF客户端代理的端点地址_Silverlight_Wcf_Wcf Client - Fatal编程技术网

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

Silverlight 修改WCF客户端代理的端点地址,silverlight,wcf,wcf-client,Silverlight,Wcf,Wcf Client,当我使用服务引用从Silverlight进行web服务调用时,有没有办法让(生成的)SoapClient对象修改它们调用服务的地址 具体地说,我想在服务进行的每个调用上附加一个QueryString值。所以如果我有 DataService.SilverlightServiceSoapClient C=newdataservice.SilverlightServiceSoapClient() 有没有什么方法可以做到: C.Address += "?Foo=Bar"; 通过我的WebMethod,

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

具体地说,我想在服务进行的每个调用上附加一个QueryString值。所以如果我有

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存储在智能的地方,这样它就不只是硬编码到你的构造函数中了。。。