tengo un servicio llamado WcfService2 (original lo sé) que tiene presentar una IService.cs con una interfaz pública:ServiceHost sólo es compatible con los tipos de servicio de clase
namespace WcfService2
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate = "/{value}")]
string GetData(string value);
}
}
entonces tengo mi clase pública Service1.svc.cs archivo que devuelve una cadena para el valor de este modo:
namespace WcfService2
{
public class Service1 : IService1
{
public string GetData(string value)
{
return string.Format("You entered: {0}", value);
}
}
}
ahora estoy tratando de acoger 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 aparece un error después de ejecutarlo:
ServiceHost solo es compatible con los tipos de servicio de clase.
Esto obviamente se refiere a que mi IService es de tipo de interfaz pública. Pero no sé cómo crearlo, cuando creé por primera vez el WCF Service application
, le proporciono los dos archivos estándar de IService y Service.svc si elimino cualquiera de ellos, y solo implemento esta solución en una clase cuando intento agregar la web. servicio en alma local no se encuentra nada.
¿Hay alguna manera de jugar con el código de host?
Hay otra respuesta para tratar @ http://stackoverflow.com/q/19306395/16391 – StingyJack