I have been using WCF for a few years now and am very comfortable with
it but I have only recently had the need to expose a single service
with multiple endpoints. I have followed the instructions from this
very informative article: 
http://msdn.microsoft.com/en-us/magazine/cc163412.aspx.
In particular, this excerpt from the site: "IIS Addressing
Considerations... Suppose you have a file named calc.svc and you place
it in a virtual directory that corresponds to http://localhost:8080/calcservice.
The base address for this service will be 
http://localhost:8080/calcservice/calc.svc.
Assuming you’ve enabled HTTP GET metadata retrieval, the help page
will be exposed at that same address, which you can simply browse to
in Internet Explorer.....Now, consider the endpoint configuration
found in the virtual directory’s web.config file (in Figure 3). In
this case, the address of the first endpoint becomes the same as the
base address (http://localhost:8080/calcservice/calc.svc) since I left
the endpoint address empty. The address of the second endpoint becomes
the combination of the base address appended with "secure", like this:
http://localhost:8080/calcservice/calc.svc/secure.";

My service is named "MainService.svc" and the URL for this service is
https://localhost:444/MainService.svc. If I add another endpoint with
an address named "Soap12" I would expect to see the other endpoint
available at https://localhost:444/MainService.svc/Soap12 but I get an
error indicating that the document is not found.

Are there any troubleshooting tools that will allow me to see what
addresses are available for my service? As an example if I had a
bootstrap log of aspnet_isapi.dll (or whichever component was in
charge of this) that would indicate the URLs it was intending to
respond to based on the parsing of the web.config file it would be
invaluable. As for now I'm just shooting in the dark trying to hit a
URL that responds.

Here is an example of what my endpoint configurations look like:

<service behaviorConfiguration="MyService.MainServiceBehavior"
name="MyService.MainService">
  <endpoint address="Soap12" binding="wsHttpBinding"
bindingConfiguration="WSBindingConfig"
contract="MyService.IMainService">
    <identity>
      <dns value="localhost" />
    </identity>
  </endpoint>
  <endpoint address="Soap11" binding="basicHttpBinding"
bindingConfiguration="BasicBindingWithCredentials"
            contract="MyService.IMainService">
    <identity>
      <dns value="localhost" />
    </identity>
  </endpoint>
  <endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>

Reply via email to