关闭WCF服务(ServiceHost)并不像看起来那么优雅

时间:2014-01-15 06:17:10

标签: wcf timeout servicehost netmsmqbinding

当我拨打serviceHost.Close()时,即使我设置超时值serviceHost.Close(TimeSpan.FromMinutes(10)),当它停止接收消息时,我的消息似乎也会不时丢失。

我希望我的服务在操作过程中停止,但处理已收到的其余消息。有没有办法在消息处理时正常关闭服务?

我已经将app.config中的closeTimeoutreceiveTimeout设置为10分钟,也使用RequestAdditionalTime(600000)但我仍然遇到此问题。它不会在10分钟内关闭,而是在最多1分钟关闭

我使用的绑定是 netMsmqBinding

修改

我通过在ServiceBase方法OnStop中添加while语句来暂时解决问题,如果进程没有完成,那么它将继续循环。这似乎是一个肮脏的黑客,但它现在有效。如果有一种更清洁的方式来优雅地结束它,请告诉我。

0 个答案:

没有答案