Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5

  Switch on low bandwidth view
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
BasicHttpBinding Class

Represents a binding that a Windows Communication Foundation (WCF) service can use to configure and expose endpoints that are able to communicate with ASMX-based Web services and clients and other services that conform to the WS-I Basic Profile 1.1.

Namespace:  System.ServiceModel
Assembly:  System.ServiceModel (in System.ServiceModel.dll)
Visual Basic (Declaration)
Public Class BasicHttpBinding _
    Inherits Binding _
    Implements IBindingRuntimePreferences
Visual Basic (Usage)
Dim instance As BasicHttpBinding
C#
public class BasicHttpBinding : Binding, 
    IBindingRuntimePreferences
Visual C++
public ref class BasicHttpBinding : public Binding, 
    IBindingRuntimePreferences
JScript
public class BasicHttpBinding extends Binding implements IBindingRuntimePreferences

The BasicHttpBinding uses HTTP as the transport for sending SOAP 1.1 messages. A service can use this binding to expose endpoints that conform to WS-I BP 1.1, such as those that ASMX clients access. Similarly, a client can use the BasicHttpBinding to communicate with services exposing endpoints that conform to WS-I BP 1.1, such as ASMX Web services or Windows Communication Foundation (WCF) services configured with the BasicHttpBinding.

Security is turned off by default, but can be added setting the BasicHttpSecurityMode to a value other than None in the BasicHttpBinding(BasicHttpSecurityMode) constructor. It uses a "Text" message encoding and UTF-8 text encoding by default.

The following example shows how to configure the BasicHttpBinding in an application configuration file.

<system.serviceModel>
  <services>
    <service
        name="Microsoft.ServiceModel.Samples.CalculatorService"
        behaviorConfiguration="CalculatorServiceBehavior">
      <!-- use base address provided by host -->
      <!-- specify BasicHttp binding and a binding configuration to use -->
      <endpoint address=""
                binding="basicHttpBinding"
                bindingConfiguration="Binding1"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </service>
  </services>

  <bindings>
    <!-- 
          Following is the expanded configuration section for a BasicHttpBinding.
          Each property is configured with the default value.
          See the TransportSecurity, and MessageSecurity samples in the
          Basic directory to learn how to configure these features.
          -->
    <basicHttpBinding>
      <binding name="Binding1"
               hostNameComparisonMode="StrongWildcard"
               receiveTimeout="00:10:00"
               sendTimeout="00:10:00"
               openTimeout="00:10:00"
               closeTimeout="00:10:00"
               maxReceivedMessageSize="65536"
               maxBufferSize="65536"
               maxBufferPoolSize="524288"
               transferMode="Buffered"
               messageEncoding="Text"
               textEncoding="utf-8"
               bypassProxyOnLocal="false"
               useDefaultWebProxy="true" >
        <security mode="None" />
      </binding>
    </basicHttpBinding>
  </bindings>

  <!--For debugging purposes set the returnUnknownExceptionsAsFaults attribute to true-->
  <behaviors>
    <serviceBehaviors>
      <behavior name="CalculatorServiceBehavior">
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>

</system.serviceModel>

The following example shows how to programmatically configure BasicHttpBinding.

Visual Basic
   <ServiceContract(Namespace:="http://UE.ServiceModel.Samples")> _
   Public Interface ICalculator

       <OperationContract()> _
       Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
       <OperationContract()> _
       Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
       <OperationContract()> _
       Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
       <OperationContract()> _
       Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
   End Interface

   ' Service class which implements the service contract.
   ' Added code to write output to the console window
   Public Class CalculatorService
       Implements ICalculator

       Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Add

           Dim result As Double = n1 + n2
           Console.WriteLine("Received Add({0},{1})", n1, n2)
           Console.WriteLine("Return: {0}", result)
           Return result
       End Function

       Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Subtract

           Dim result As Double = n1 - n2
           Console.WriteLine("Received Subtract({0},{1})", n1, n2)
           Console.WriteLine("Return: {0}", result)
           Return result
       End Function

       Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Multiply

           Dim result As Double = n1 * n2
           Console.WriteLine("Received Multiply({0},{1})", n1, n2)
           Console.WriteLine("Return: {0}", result)
           Return result
       End Function

       Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Divide

           Dim result As Double = n1 / n2
           Console.WriteLine("Received Divide({0},{1})", n1, n2)
           Console.WriteLine("Return: {0}", result)
           Return result
       End Function

       Public Shared Sub Main()
           Dim binding As BasicHttpBinding = New BasicHttpBinding()
           binding.Name = "binding1"
           binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
           binding.Security.Mode = BasicHttpSecurityMode.None

           Dim baseAddress As Uri = New Uri("http://localhost:8000/servicemodelsamples/service")
           Dim address As Uri = New Uri("http://localhost:8000/servicemodelsamples/service/calc")

           ' Create a ServiceHost for the CalculatorService type and provide the base address.
           Using serviceHost As ServiceHost = New ServiceHost(GetType(CalculatorService), baseAddress)

               serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, address)

               ' Open the ServiceHost to create listeners and start listening for messages.
               serviceHost.Open()

               ' The service can now be accessed.
               Console.WriteLine("The service is ready.")
               Console.WriteLine("Press <ENTER> to terminate service.")
               Console.WriteLine()
               Console.ReadLine()

               ' Close the ServiceHost to shutdown the service.
               serviceHost.Close()
           End Using
       End Sub
   End Class

C#
    [ServiceContract(Namespace = "http://UE.ServiceModel.Samples")]
    public interface ICalculator
    {
        [OperationContract(IsOneWay = false)]
        double Add(double n1, double n2);
        [OperationContract(IsOneWay = false)]
        double Subtract(double n1, double n2);
        [OperationContract(IsOneWay = false)]
        double Multiply(double n1, double n2);
        [OperationContract(IsOneWay = false)]
        double Divide(double n1, double n2);
    }

    public class CalculatorService : ICalculator
    {
        public double Add(double n1, double n2)
        {
            double result = n1 + n2;
            Console.WriteLine("Received Add({0},{1})", n1, n2);
            Console.WriteLine("Return: {0}", result);
            return result;
        }

        public double Subtract(double n1, double n2)
        {
            double result = n1 - n2;
            Console.WriteLine("Received Subtract({0},{1})", n1, n2);
            Console.WriteLine("Return: {0}", result);
            return result;
        }

        public double Multiply(double n1, double n2)
        {
            double result = n1 * n2;
            Console.WriteLine("Received Multiply({0},{1})", n1, n2);
            Console.WriteLine("Return: {0}", result);
            return result;
        }

        public double Divide(double n1, double n2)
        {
            double result = n1 / n2;
            Console.WriteLine("Received Divide({0},{1})", n1, n2);
            Console.WriteLine("Return: {0}", result);
            return result;
        }

        public static void Main()
        {
            BasicHttpBinding binding = new BasicHttpBinding();
            binding.Name = "binding1";
            binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
            binding.Security.Mode = BasicHttpSecurityMode.None;

            Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
            Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

            // Create a ServiceHost for the CalculatorService type and provide the base address.
            ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);

            serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

            // Open the ServiceHostBase to create listeners and start listening for messages.
            serviceHost.Open();

            // The service can now be accessed.
            Console.WriteLine("The service is ready.");
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();
        
            // Close the ServiceHostBase to shutdown the service.
            serviceHost.Close();

        }
    }

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0

.NET Compact Framework

Supported in: 3.5
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Stuff I did to get this to work      hattonj   |   Edit   |   Show History
Getting this to work on vista required:
1) turned on http features in the control panel:programs and features:.net 3
2) opened netsh as an administrator
3) http add urlacl url=http://+:8000/servicemodelsamples/service user=<user account here>
Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker