Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the default WCF Binding?

I've been struggling for a few days with this problem, learning a lot of things on bindings in the process. One thing puzzles me, though: various links (see this or that for example) explicitly state "By default, WCF project is created using WsHttpBinding", but that's not what I see. This is what I do:

  1. Open Visual Studio 2010 and choose New Project / Visual C# / WCF Service Application
  2. Don't touch anything inside the code, set a local IIS Url for the service (say http://localhost/WcfService7)
  3. Open soapUI and choose File / New Soap UI Project / enter the url of the newly created wsdl: http://localhost/WcfService7/Service1.svc?wsdl, not touching any other option
  4. Interface properties: SOAP Version = SOAP 1.1, Binding = "BasicHttpBinding_IService1" (even though it's just a name, it's a hell of a hint)
  5. Open Altova XmlSpy and choose SOAP / Create new SOAP Request / enter the url of the wsdl / select any operation
  6. SOAP / Change SOAP Request parameters / Ensure that "Send as SOAP+XML (SOAP 1.2)" is checked
  7. SOAP / Send request to server: i get the errors

    HTTP error: could not POST file ‘/WcfService7/Service1.svc’ on server ’localhost’ (415)

    Error sending the soap data to ‘http://localhost/WcfService7/Service1.svc’ HTTP error: could not POST file ‘/WcfService7/Service1.svc’ on server ’10.51.0.108’ (415)

Any explanations? Thanks

like image 989
Piddu Avatar asked Jun 07 '11 10:06

Piddu


People also ask

What are the bindings in WCF?

Bindings are objects that are used to specify the communication details that are required to connect to the endpoint of a Windows Communication Foundation (WCF) service. Each endpoint in a WCF service requires a binding to be well-specified.

What is custom binding in WCF?

In this article Custom bindings can be built from a set of system-provided binding elements or can include user-defined custom binding elements. You can use custom binding elements, for example, to enable the use of new transports or encoders at a service endpoint.

Which binding is used in WCF to support REST based service?

Web binding This binding is provided by the WebHttpBinding class. It is designed to expose WCF services as HTTP requests using HTTP-GET and HTTP-POST. It is used with REST based services that may provide output in XML or JSON format.

Which WCF binding supports Asmx Web service?

Basic binding is offered by the BasicHttpBinding class. It uses the HTTP protocol to transport and represent a WCF service as an ASP.NET web service (ASMX web service), so that old clients who use ASMX web services can consume the new services conveniently.


1 Answers

When hosting WCF service in IIS (using WCF Service application project template) with default .svc file (without changing its service host factory) the default binding is basicHttpBinding. If you want to change default binding to wsHttpBinding you must use:

<protocolMapping>
    <add scheme="http" binding="wsHttpBinding"/>
</protocolMapping>

In your service's configuration file but it will not solve your problem because you don't need wsHttpBinding and as I remember Altova XmlSpy is not able to send valid request for wsHttpBinding because it supports only basic SOAP stack without WS-* protocols.

like image 133
Ladislav Mrnka Avatar answered Sep 24 '22 00:09

Ladislav Mrnka