是否有可能强制WCF服务进入故障状态进行测试?

时间:2013-04-26 18:57:23

标签: wcf c#-4.0

我正在尝试测试由于.NET 4和MSMQ的已知问题而有时会出错的服务。请参阅此post

当然,现在我已经实现了代码来处理故障并重新启动服务我无法重现它(它很少发生)。有什么地方我可以强迫它进入故障状态(CommunicationState.Faulted)。我需要测试我的代码,这些代码基本上是通过博客文章复制的,只需添加一些日志记录,并添加一个键值对来保存有关服务的一些信息。

void FaultedServiceHandler(object sender, EventArgs e)
        {
            Logger.Error(new Exception(string.Format("ServiceHost received a service fault event from {0}", sender)));

            var faultedServices = _services.Where(t => t.Value.Host != null && t.Value.Host.State == CommunicationState.Faulted).ToList();

            foreach (var serviceKvp in faultedServices)
            {
                 serviceKvp.Value.Host.Closed -= new EventHandler(ServiceClosedEventHandler);
                    serviceKvp.Value.Host.Abort();
                    serviceKvp.Value.Host = null;

                    // Now open up a new instance of this service.
                    ServiceStartup(serviceKvp.Value.Definition);
                    LogEvent(String.Format("Host {0} was found in a faulted state.", serviceKvp.Key));
                    Logger.Error(new Exception("FaultedServiceHandler: Aborting " + serviceKvp.Key + " Host and Restarting."));
            }
        }

说真的 - 这就像墨菲定律。现在,我需要测试修复,这件事情不会破坏。

0 个答案:

没有答案