不通过击键关闭 WCF 服务主机
Not to close the WCF service host from key stroke
我们创建了一个需要用户按键关闭的服务主机控制台应用程序,代码片段如下:
........
host.Open();
Console.WriteLine($"The service is ready {host.Description.Endpoints?.FirstOrDefault()?.Address.Uri.ToString()}");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
Console.WriteLine("<ENTER> pressed, about to Shutdown Service Host ...");
host.Close();
Console.WriteLine("Service Host is closed");
.......
我想消除用户干预以关闭主机并保持打开状态。评论 host.Close() 行会确认它仍然打开吗?
----------------------------更新------------ ------------------------
我之前的post可能还不够清楚。我期待机器对机器交互来启动和停止 WCF 服务主机,而不是人机交互。我们当前的解决方案基于以下内容:
How to: Host a WCF service in a managed app
我们面临的问题是基于上述解决方案的.exe在某个端点地址启动通道后立即关闭。很明显,不知何故按下了 ENTER
以下是我们面临的问题的可能解决方案吗?
您只需删除 host.Close()。 host.Close() 方法将使通信对象从其当前状态转换为关闭状态。关于ServiceHost的更多信息Class,可以参考这篇link.
更新:
只要 host.Close() 不是 运行,WCF 服务将在正常情况下保持打开状态。如果 WCF 服务托管在 Windows 服务中,我们可以通过 运行 启用 Windows 服务或停止 Windows 服务来启动和关闭 WCF 服务。
WCF 也可以托管在 IIS 中。 IIS 中托管的 WCF 服务就像一个 Web 应用程序。只要站点处于 Start 状态,WCF 服务将始终 运行.
有关“在 IIS 中托管 WCF 服务”的更多信息,您可以参考此link。
我们创建了一个需要用户按键关闭的服务主机控制台应用程序,代码片段如下:
........
host.Open();
Console.WriteLine($"The service is ready {host.Description.Endpoints?.FirstOrDefault()?.Address.Uri.ToString()}");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
Console.WriteLine("<ENTER> pressed, about to Shutdown Service Host ...");
host.Close();
Console.WriteLine("Service Host is closed");
.......
我想消除用户干预以关闭主机并保持打开状态。评论 host.Close() 行会确认它仍然打开吗?
----------------------------更新------------ ------------------------
我之前的post可能还不够清楚。我期待机器对机器交互来启动和停止 WCF 服务主机,而不是人机交互。我们当前的解决方案基于以下内容:
How to: Host a WCF service in a managed app
我们面临的问题是基于上述解决方案的.exe在某个端点地址启动通道后立即关闭。很明显,不知何故按下了 ENTER
以下是我们面临的问题的可能解决方案吗?
您只需删除 host.Close()。 host.Close() 方法将使通信对象从其当前状态转换为关闭状态。关于ServiceHost的更多信息Class,可以参考这篇link.
更新:
只要 host.Close() 不是 运行,WCF 服务将在正常情况下保持打开状态。如果 WCF 服务托管在 Windows 服务中,我们可以通过 运行 启用 Windows 服务或停止 Windows 服务来启动和关闭 WCF 服务。
WCF 也可以托管在 IIS 中。 IIS 中托管的 WCF 服务就像一个 Web 应用程序。只要站点处于 Start 状态,WCF 服务将始终 运行.
有关“在 IIS 中托管 WCF 服务”的更多信息,您可以参考此link。