views:

701

answers:

1

I have been trying to add a new endpoint in a service hosted under IIS but haven't been able to figure it out for the past day or so.

This is my understanding:

  • you can have multiple endpoints under IIS as long as they have unique addresses.
  • you could assign a base address but it will be overridden by the virtual directory setup in IIS.

My virtual directory is http://localhost/WcfCert/

<services>
  <service name="WcfCertServer.Service1" behaviorConfiguration="WcfCertServer.Service1Behavior">
    <endpoint address="" binding="wsHttpBinding" contract="WcfCertServer.IService1"/>
    <endpoint address="test" binding="wsHttpBinding" contract="WcfCertServer.IService1"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>

I can bring up the service using http://localhost/wcfcert/service1.svc

but http://localhost/wcfcert/test/service1.svc/test doesn't return anything in IE or the client app

what am I missing here?

Edit:

So i did further testing, and here is what i discovered.

if i start WcfTestClient.exe and add either http://localhost:1523/Service1.svc or http://localhost:1523/Service1.svc/mex it will add both the endpoint under that address. so here is my question shouldn't http://localhost:1523/Service1.svc only represent the first endpoint? why adding that address bring up both endpoints?

but if I try to add http://localhost:1523/Service1.svc/test I get

Error: Cannot obtain Metadata from http://localhost:1523/Service1.svc/test If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:1523/Service1.svc/test Metadata contains a reference that cannot be resolved: 'http://localhost:1523/Service1.svc/test'. Sendera:BadContextTokenThe message could not be processed. This is most likely because the action 'http://schemas.xmlsoap.org/ws/2004/09/transfer/Get' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.HTTP GET Error URI: http://localhost:1523/Service1.svc/test There was an error downloading 'http://localhost:1523/Service1.svc/test'. The request failed with HTTP status 400: Bad Request.

+2  A: 

It would actually be:

http://localhost/wcfcert/service1.svc/test

If you want the URL to be 'http://localhost/wcfcert/test/service1.svc', then you will need to specify the full URL in the address attribute.

jrista
I tried both, now i get 'HTTP 400 Bad request.'
Keivan
@Keivan: For the second option, did you set address="http://localhost/wcfcert/test/service1.svc", or just leave it at address="test"? If you want the URL to be http://localhost/wcfcert/test/service1.svc, then you need to make sure you specify the full address in the address attribute.
jrista
I have tried both "localhost/wcfcert/test/service1.svc" and "localhost/wcfcert/service1.svc/test"
Keivan
I have edited the question, i don't need any specific url, I'm just trying to have more than one endpoint.
Keivan
@Keivan: To have more than one endpoint, you either need to use different transport protocols for the bindings for each endpoint, or for multiple endpoints with the same protocol, you need unique URL's. Since you are using the wsHttp binding for both (disregarding the mex), you need to have unique URL's for each endpoint. It sounds like you have it configured correctly....so I am currently at a loss as to why you are getting a 400 error.
jrista
out of curiosity, have you gotten it to work on your computer?
Keivan
I use WCF regularly, and I've encountered my fair share of little issues getting things to work at times. Nevertheless, in the end, I have always managed to get my services working and properly hosted. Just out of curiosity...are you using IIS 7 or 6? If you are using IIS 6, make sure you have mapped the .svc extension to the ASP.NET ISAPI handler.
jrista
its running under windows 7, IIS 7.
Keivan