Patrick Desjardins
Patrick Desjardins

Reputation: 140793

WCF .svc worked but not the config file

I am trying to use the configuration file to define endpoint and services information. I have a very simple code that contain OneWay service and a Duplex service. The OneWay worked when I haven't try to alter the configuration file.

Now, I want to use the configuration file to define both service.

Service1 contract name is IOneWayService and the Service2 contract name is ICallBackService.

Both have implemented code in their concrete respective classes name OneWayService.svc.cs and CallBackService.svc.cs.

The configuration file at this moment look like that :

<configuration>
   <system.web>
      <compilation debug="true" targetFramework="4.0" />
   </system.web>
   <system.serviceModel>
      <serviceHostingEnvironment  multipleSiteBindingsEnabled="true">
         <serviceActivations>
            <add relativeAddress="OneWayService.svc" service="TestingWcf.OneWayService"/>
            <add relativeAddress="CallBackService.svc" service="TestingWcf.CallBackService"/>
         </serviceActivations>
      </serviceHostingEnvironment>
      <services>
         <service name="TestingWcf.OneWayService">
            <endpoint address="http://localhost:60847/One"
              binding="wsHttpBinding"
              contract="IOneWayService" />
         </service>
         <service name="TestingWcf.CallBackService">
            <endpoint address="http://localhost:60847/Two"
               binding="wsHttpBinding"
               contract="IDuplexService" />
         </service>
      </services>
      <behaviors>
         <serviceBehaviors>
            <behavior>
               <serviceMetadata httpGetEnabled="true"/>
               <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
         </serviceBehaviors>
      </behaviors>
   </system.serviceModel>
   <system.webServer>
      <modules runAllManagedModulesForAllRequests="true"/>
   </system.webServer>
</configuration>

I always have this error when trying to execute the OneWayService via this url : http://localhost:60847/OneWayService.svc

The contract name 'IOneWayService' could not be found in the list of contracts implemented by the service 'OneWayService'.

Anybody have an idea why?

Edit

I have removed the multipleSiteBindingsEnabled= true from the servinceHostingEnvironment tag and in the contract added the namespace and I could runt the OneWayService.

Also, the Duplex cannot be bound to the wsHttpBinding. I had to change it to NetTcpBinding. But, I had an other error with the Duplex :

Configuration binding extension 'system.serviceModel/bindings/NetTcpBinding' could not be found. Verify that this binding extension is properly registered in system.serviceModel/extensions/bindingExtensions and that it is spelled correctly.

From this point, I am lost again.

Edit 2

I did an error in the binding name. I had a capital letter for NetTcpBinding and it does require a lowercase: netTcpBinding. However, it's still not working, now I have:

The protocol 'net.tcp' is not supported. >.< !!!

Upvotes: 2

Views: 778

Answers (1)

marc_s
marc_s

Reputation: 754438

OK, that explains it - Visual Studio by default uses the built-in Cassini web server (unless you've already switched to using IIS Express) - and that server doesn't support anything but plain http.

Cassini doesn't support net.tcp and anything like that.

You will need to start using a separate IIS virtual directory and first enable all the necessary support stuff (in the Add/remove Windows Features dialog)

Upvotes: 1

Related Questions