NT托管的WCF服务MSMQ无法完全停止并锁定

时间:2010-11-15 11:57:16

标签: wcf service msmq

这个问题让我在客户的实时环境中困扰了好几个星期。

WCF服务托管在Windows Server 2003上,并具有HTTP和MSMQ端点。

将服务放置在测试环境中时,服务会干净地启动和停止,并且消息会毫无问题地传递。但是在Live环境中,服务启动正常,但不会干净地退出。

尝试停止服务时,计算机需要很长时间才能响应,并最终显示错误消息,指出服务无法停止。检查事件日志上的错误,它表示它无法写入MSMQ队列(访问被拒绝),但是,该服务能够读取和删除队列中的消息。如果然后刷新服务管理器,则该服务实际上已停止。

MSMQ队列托管在不同的物理机器上,我们无法在测试环境中重现错误。

我们不确定它是否相关,但服务也会偶尔停止从队列中提取消息。这已通过重新启动服务解决。同样,我们无法重现错误。

最近我们遇到了基于HTTP的客户端的另一个错误,在一夜的午夜,服务突然开始拒绝连接,但有以下异常:

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.

更奇怪的是,简单地重新启动服务似乎可以解决问题。

如果有人之前见过这样的事情或有任何意见,我们将不胜感激!

1 个答案:

答案 0 :(得分:1)

对同事说,显然将ServiceModelEx限制选项全部设置为“1”有助于锁定基于MSMQ的WCF服务。