Изменить адрес конечной точки клиентского прокси WCF - PullRequest
0 голосов
/ 08 января 2011

Когда я выполняю вызовы веб-службы из Silverlight, используя ссылку на службу, есть ли способ заставить (сгенерированные) объекты SoapClient изменить адрес, по которому они вызывают службу?

В частности, я бы хотел использовать значение QueryString для каждого вызова, который выполняет служба. Так что, если у меня есть

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

Есть ли способ сделать что-то вроде:

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

Что позволило бы мне из моего WebMethod сказать:

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

Очевидно, что я могу изменить свои WebMethods, чтобы принимать это значение в качестве параметра, но я бы хотел, если это возможно, избежать этого.

Ответы [ 2 ]

2 голосов
/ 08 января 2011

Поскольку вы уже используете ссылки на сервисы, вы можете просто использовать перегрузку конструктора прокси-класса, который принимает EndpointAddress в качестве параметра. В качестве альтернативы, вы можете создать несколько конфигураций конечных точек и сделать так, чтобы код просто использовал выбранную конфигурацию - которая может включать изменения URL.

См. Общие сведения о сгенерированном клиентском коде в MSDN.

0 голосов
/ 08 января 2011

Похоже, что лучший способ сделать это - просто использовать один из перегруженных конструкторов и предоставить URI самостоятельно.

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