ServiceHost sólo admite la clase de los tipos de servicio

Que tiene un servicio llamado WcfService2 (original sé), que tiene una IService.cs archivo con una interfaz pública:

namespace WcfService2
{
    [ServiceContract]
    public interface IService1
    {    
        [OperationContract]
        [WebGet(UriTemplate = "/{value}")]
        string GetData(string value);            
    }
}

Luego tengo mi público de clase Service1.svc.cs archivo que devuelve una cadena con el valor así:

namespace WcfService2
{
    public class Service1 : IService1
    {
        public string GetData(string value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
}

Ahora estoy tratando de ser anfitrión de este servicio con una aplicación de consola, así:

namespace Host
{
    class Program
    {
        static void Main(string[] args)
        {
            WebHttpBinding binding = new WebHttpBinding();
            WebServiceHost host =
            new WebServiceHost(typeof(IService1));
            host.AddServiceEndpoint(typeof(IService1),
            binding,
            "http://localhost:8000/Hello");
            host.Open();
            Console.WriteLine("I DONT LIKE REST!");
            Console.WriteLine("Press <RETURN> to KILL REST FOR GOOD");
            Console.ReadLine();
        }
    }
}

Pero me da un error después de ejecutar:

ServiceHost sólo admite la clase de los tipos de servicio.

Así que esto obviamente se refiere a mi IService pública tipo de interfaz. Pero no sé de qué otra manera a crear, cuando por primera vez creada la WCF Service application le da los dos archivos estándar IService y Servicio.svc archivos si puedo eliminar o, y sólo de Implementar esta solución en una clase cuando trato de agregar el servicio web en local soultion no se encuentra nada.

Hay una manera de jugar con el código de host?

No hay otra respuesta a intentar @ stackoverflow.com/q/19306395/16391

OriginalEl autor Garrith Graham | 2012-03-25

2 Kommentare

  1. 28

    Sugiero que se cambie este:

    WebServiceHost host = new WebServiceHost(typeof(IService1));

    a este:

    WebServiceHost host = new WebServiceHost(typeof(Service1));
    Me sale este error si hago eso: The contract type WcfService2.Service1 is not attributed with ServiceContractAttribute. In order to define a valid contract, the specified type (either contract interface or service class) must be attributed with ServiceContractAttribute.
    Usted no debe conseguir que el primer error con el código publicado. Sus divagaciones acerca de la eliminación de archivos pueden jugar un papel en esto.
    Cualquiera que lea esta respuesta por favor vea también: stackoverflow.com/questions/9864006/… ten cuidado como WebServiceHost es Service1 y AddServiceEndpoint es IService1!
    cómo esto puede ser una respuesta? Causa contract type WcfService2.Service1 is not attributed with ServiceContractAttribute error como @GarrithGraham dijo

    OriginalEl autor Will Marcouiller

  2. 4

    Debe crear el WebServiceHost con la clase que implementa el servicio;

    WebServiceHost host = new WebServiceHost(typeof(Service1));

    Leer aquí para un ejemplo.

    por favor ver respuesta bajo Se Marcouliers respuesta.

    OriginalEl autor Joachim Isaksson

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea