2010-11-15 50 views
0

这是一个问题,让我在客户的Live环境困扰了几个星期。NT托管WCF服务与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.

更加好奇了,是简单地重新启动服务似乎纠正了这个问题。

如果有人看过类似的东西之前或有任何意见,将不胜感激!

+0

服务使用ServiceModelEx库托管 – Geoff 2011-01-04 11:22:57

回答

1

对一位同事说,显然将ServiceModelEx限制选项全部设置为“1”可帮助解决基于MSMQ的WCF服务上的锁定问题。