重新启动中止的ServiceHost

时间:2018-07-06 21:45:20

标签: c# wcf named-pipes servicehost

我正在使用WCF命名管道在我的应用程序中传递消息。使用以下代码,可以在应用程序启动期间正确实例化主机。

try
{
  var host = new ServiceHost(typeof(TestService),
            new Uri("net.pipe://localhost"));

  var binding = new NetNamedPipeBinding();
  binding.CloseTimeout = TimeSpan.MaxValue;
  binding.OpenTimeout = TimeSpan.MaxValue;
  binding.ReceiveTimeout = TimeSpan.MaxValue;
  binding.SendTimeout = TimeSpan.MaxValue;
  host.AddServiceEndpoint(typeof(ITestService), binding, "Test");
  host.Open();
}
catch (Exception ex)
{
  Logger.WriteLog(LogLevelL4N.Error, ex.Message);
}

应用程序可以正常运行,直到出现错误的随机点为止:

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it has been Aborted.

据我了解,中止的主机无法重复使用,因此必须重新创建。在错误点,我重用了上面的代码,这是第二个错误:

"A registration already exists for URI 'net.pipe://localhost/Test'."

有人可以提供有关如何重新启动中止的ServiceHost的完整示例吗?

0 个答案:

没有答案