我试图在WPF应用程序中托管WCF服务,但我无法这样做。
以下是我实施的代码:
ServiceHost host = null;
using (host = new ServiceHost(typeof(WcfJsonTransferRestService.apiService)))
{
host.AddServiceEndpoint(typeof(WcfJsonTransferRestService.IApiService), new WebHttpBinding(), "http://localhost:3300/api/endpoint1");
host.AddServiceEndpoint(typeof(WcfJsonTransferRestService.IApiService), new WebHttpBinding(), "http://localhost:3300/api/endpoint2");
host.AddServiceEndpoint(typeof(WcfJsonTransferRestService.IApiService), new WebHttpBinding(), "http://localhost:3300/api/endpoint3");
host.Open();
一切看起来都不错,但运行正常,但服务无法启动。
任何人都知道我的问题可能是什么?
由于
答案 0 :(得分:2)
最可能的问题是,您已在ServiceHost
语句中创建并打开了using
。一旦using
语句完成(并且从您发布的代码中不清楚),ServiceHost
实例将被关闭。
换句话说,如果您在using
之后关闭host.Open();
块,请执行以下操作:
using (host = new ServiceHost(typeof(WcfJsonTransferRestService.apiService)))
{
host.AddServiceEndpoint(typeof(WcfJsonTransferRestService.IApiService), new WebHttpBinding(), "http://localhost:3300/api/endpoint1");
host.AddServiceEndpoint(typeof(WcfJsonTransferRestService.IApiService), new WebHttpBinding(), "http://localhost:3300/api/endpoint2");
host.AddServiceEndpoint(typeof(WcfJsonTransferRestService.IApiService), new WebHttpBinding(), "http://localhost:3300/api/endpoint3");
host.Open();
}
主机将关闭,您的应用程序将无法接收请求。通常,您需要在应用程序启动时(或者可能在给定事件上)打开主机,然后在应用程序退出后关闭它。