【问题标题】:NT Hosted WCF Service With MSMQ fails to stop cleanly and Locks Up使用 MSMQ 的 NT 托管 WCF 服务无法完全停止并锁定
【发布时间】:2010-11-15 11:57:15
【问题描述】:

这是一个让我在客户的 Live 环境中困惑了数周的问题。

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.

更奇怪的是,简单地重启服务似乎就能解决问题。

如果有人以前见过这样的东西或有任何 cmet,将不胜感激!

【问题讨论】:

  • 服务使用 ServiceModelEx 库托管

标签: wcf service msmq


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多