Change Address/Port of WSDL EndPointAddress at runtime?

Posted by Pretzel on Stack Overflow See other posts from Stack Overflow or by Pretzel
Published on 2010-04-19T20:20:43Z Indexed on 2010/04/19 20:23 UTC
Read the original article Hit count: 224

Filed under:
|
|
|

So I currently have 3 WSDLs added as Service References in my solution. They look like this in my app.config file (I removed the "bindings" field, because it's uninteresting):

<system.serviceModel>
  <client>
    <endpoint address="http://localhost:8080/query-service/jse" binding="basicHttpBinding" bindingConfiguration="QueryBinding" contract="QueryService.Query" name="QueryPort" />
    <endpoint address="http://localhost:8080/platetype-service/jse" binding="basicHttpBinding" bindingConfiguration="PlateTypeBinding" contract="PlateTypeService.PlateType" name="PlateTypePort" />
    <endpoint address="http://localhost:8080/dataimport-service/jse" binding="basicHttpBinding" bindingConfiguration="DataImportBinding" contract="DataImportService.DataImport" name="DataImportPort" />
  </client>   
</system.serviceModel>

When I utilize a WSDL, it looks something like this:

using (DataService.DataClient dClient = new DataService.DataClient())
{
  DataService.importTask impt = new DataService.importTask();
  impt.String_1 = "someData";
  DataService.importResponse imptr = dClient.importTask(impt);
}

In the "using" statement, when instantiating the DataClient object, I have 5 constructors available to me. In this scenario, I use the default constructor:

   new DataService.DataClient()

which uses the built-in Endpoint Address string, which is fine and good. But I want the user of the application to have the option to change this value.

1) What's the best/easiest way of programatically obtaining this string?

2) Then, once I've allowed the user to edit and test the value, where should I store it?

I'd prefer having it be stored in a place (like app.config or equivalent) so that there is no need for checking whether the value exists or not and whether I should be using an alternate constructor. (Looking to keep my code tight, ya know?)

Any ideas? Suggestions?

© Stack Overflow or respective owner

Related posts about wcf

Related posts about webservice