Servicio de host propio de WCF: puntos finales en C #

Mis primeros intentos de crear un servicio autohospedado. Intentando hacer algo que acepte una cadena de consulta y devuelva algún texto, pero ha tenido algunos problemas:

Toda la documentación habla sobre los puntos finales que se crean automáticamente para cada dirección base si no se encuentran en un archivo de configuración. Este no parece ser mi caso, me sale la excepción "El servicio tiene cero puntos finales de aplicación ...". Especificar manualmente un punto final base como se muestra a continuación parece resolver esto:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace TestService
{
    [ServiceContract]
    public interface IHelloWorldService
    {
       [OperationContract]
       string SayHello(string name);
    }

    public class HelloWorldService : IHelloWorldService
    {
        public string SayHello(string name)
        {
           return string.Format("Hello, {0}", name);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string baseaddr = "http://localhost:8080/HelloWorldService/";
            Uri baseAddress = new Uri(baseaddr);

            // 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);

                host.AddServiceEndpoint(typeof(IHelloWorldService), new BasicHttpBinding(), baseaddr);
                host.AddServiceEndpoint(typeof(IHelloWorldService), new BasicHttpBinding(), baseaddr + "SayHello");

                //for some reason a default endpoint does not get created here
                host.Open();

                Console.WriteLine("The service is ready at {0}", baseAddress);
                Console.WriteLine("Press <Enter> to stop the service.");
                Console.ReadLine();

                // Close the ServiceHost.
                host.Close();
            }
         }
     }
}

¿Cómo haría para configurar esto para devolver el valor del nombre en SayHello (nombre de cadena) cuando así se solicita: localhost: 8080 / HelloWorldService / SayHello? Name = kyle

Estoy tratando de caminar antes de correr, pero esto parece arrastrarse ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta