WCF Endpoints & Binding Configuration Issues

Posted by CodeAbundance on Stack Overflow See other posts from Stack Overflow or by CodeAbundance
Published on 2011-02-28T21:39:53Z Indexed on 2011/03/01 7:24 UTC
Read the original article Hit count: 278

Filed under:
|
|
|
|

I am running into a very strange issue here folks. For simplicity I created a project for the sole purpose of testing the issue outside the framework of a larger application and still encountered what is either a bug in WCF within Visual Studio 2010 or something related to my WCF newbie skill set : )

Here is the issue:

I have a WCF endpoint I created running inside of an MVC3 project called "SimpleMethod". The method runs inside of a .svc file on the root of the application and it returns a bool.

Using the "WCF Service Configuration Editor" I have added the endpoint to my Web.Config along with a called "LargeImageBinding".

Here is the service:

    [OperationContract]
    public bool SimpleMethod()
    {
        return true;
    }

And the Web.Config generated by the Config Tool:

<system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="LargeImageBinding" closeTimeout="00:10:00" />
  </wsHttpBinding>
</bindings>
<services>
  <service name="WCFEndpoints.ServiceTestOne">
    <endpoint address="/ServiceTestOne.svc" binding="wsHttpBinding"
      bindingConfiguration="LargeImageBinding" contract="WCFEndpoints.IServiceTestOne" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

The service renders fine and you can see the endpoint when you navigate to: http://localhost:57364/ServiceTestOne.svc - Now the issue occurs when I create a separate project to consume the service. I add a service reference to a running instance of the above project, point it to: http://localhost:57364/ServiceTestOne.svc

Here is the weird part. The service automatically generates just fine but In the Web.Config the endpoint that is generated looks like this:

<client>
  <endpoint address="http://localhost:57364/ServiceTestOne.svc/ServiceTestOne.svc"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IServiceTestOne"
    contract="ServiceTestOne.IServiceTestOne" name="WSHttpBinding_IServiceTestOne">

As you can see it lists the "ServiceTestOne.svc" portion of the address twice!

When I make a call to the the service I get the following error:

The remote server returned an error: (404) Not Found.

I tried removing the extra "/ServiceTestOne.svc" at the end of the endpoint address in the above config, and I get the same exact error.

Now what DOES work is if I go back to the WCF application and remove the custom endpoint and binding references in the Web.Config (everything in the "services" and "bindings" tags) then go back to the consumer application, update the reference to the service and make the call to SimpleMethod()....BOOM works like a charm and I get back a bool set to true.

The thing is, I need to make custom binding configurations in order to allow for access to the service outside of the defaults, and from what I can tell, any attempt to create custom bindings makes the endpoints seem to run fine, but fail when an actual method call is made.

Can anyone see any flaw in how I am putting this together? Thank you for your time - I have been running in circles with this for about a week!

© Stack Overflow or respective owner

Related posts about ASP.NET

Related posts about wcf