在WPF应用程序中托管WCF服务

时间:2016-09-13 11:10:42

标签: c# wpf wcf wcf-rest

我试图在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();

一切看起来都不错,但运行正常,但服务无法启动。

任何人都知道我的问题可能是什么?

由于

1 个答案:

答案 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();
}

主机将关闭,您的应用程序将无法接收请求。通常,您需要在应用程序启动时(或者可能在给定事件上)打开主机,然后在应用程序退出后关闭它。