title: How to call self host wcf service from asp.net client?
body: <p>I have a console app that self hosts a WCF service. When user access a asp.net application and clicks a button on a page, how to write some script to call this self hosted WCF service (the service hosted on local). I guess something wrong in my script, please help.</p>
  
  <pre><code>namespace SelfHost
  {
    [ServiceContract]
    public interface IHelloWorldService
    {
        [OperationContract]
        string SayHello(string name);
    }
  
    [AspNetCompatibilityRequirements(RequirementsMode =     AspNetCompatibilityRequirementsMode.Allowed)]
    public class HelloWorldService : IHelloWorldService
    {
      public string SayHello(string name)
      {
          return string.Format("Hello, {0}", name);
      }
  }
  
  class Program
  {
      static void Main(string[] args)
      {
          Uri baseAddress = new Uri("http://127.0.0.1/hello");
  
          // Create the ServiceHost.
          using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress))
          {
              // Enable metadata publishing.
              ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
              smb.HttpGetEnabled = true;
              smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
              host.Description.Behaviors.Add(smb);
  
              // Open the ServiceHost to start listening for messages. Since
              // no endpoints are explicitly configured, the runtime will create
              // one endpoint per base address for each service contract implemented
              // by the service.
              host.Open();
  
              Console.WriteLine("The service is ready at {0}", baseAddress);
              Console.WriteLine("Press &lt;Enter&gt; to stop the service.");
              Console.ReadLine();
  
              // Close the ServiceHost.
              host.Close();
          }
      }
  }
  </code></pre>
  
  <p>Script to calling the service</p>
  
  <pre><code>&lt;script type="text/javascript"&gt;
      function invokeService() {
          $(document).ready(function () {
              var userName = " test";
  
              $.ajax({
                  type: "POST",
                  async: "false",
                  url: "http://127.0.0.1:8080/hello",
                  data: "{'name':'" + userName + "'}",
                  contentType: "application/json; charset=utf-8",
                  dataType: "json",
                  processData: true,
                  method: "SayHello",
                  success: function (result) {
                      AjaxSucceeded(result);
                  },
                  error: function (retult) {
                      AjaxFailed(result);
                  }
              });
          });
      }
  </code></pre>