我有从 net 3.5 移植的 .net 4.0 应用程序,它使用在服务器 2008 x64 上运行的 net.msmq
设置
- 地址为“net.msmq://localhost/private/msmqdataservice.svc”的 net.msmq 服务
- net.msmq 端点地址为“net.msmq://localhost/private/msmqdataservice.svc”
- MSMQ 中的队列 -> 名称 = "$private\msmqdataservice.svc"
现在一切都在使用 .net 3.5 进行生产。
我在服务器上安装了 .net 4.0 并创建了新站点以在同一个盒子上登台。
新的暂存 msmq 设置是
- 地址为“net.msmq://localhost/private/staging/msmqdataservice.svc”的 net.msmq 服务
- net.msmq 端点地址为“net.msmq://localhost/private/staging/msmqdataservice.svc”
- MSMQ 中的队列 -> 名称 = "$private\staging/msmqdataservice.svc"
为不同的站点创建了另一个队列。
我对新站点所做的另一个更改是,这是 iis 中的不同站点,侦听不同的 IP 地址。我已将 net.msmq 绑定到“localhost”。主站点对 net.msmq -> 'localhost' 也有相同的绑定。我认为应该是这样。请指出是否需要一些不同的配置。
问题是我的请求正在排队,但没有被应用程序接收,它只是停留在那里
日志中没有任何错误的迹象。我在与此相关的日志中看到的唯一内容是警告“msmqactivation 无法发现队列”。虽然这个警告我从来没有正确理解,因为我们一直看到这个在 3.5 中使用 msmq 时一切正常。
我能想到的任何事情都经过验证并且是正确的。
- 应用程序的应用程序池作为网络服务运行,并且具有对队列的完全访问权限。
- net.msmq 激活服务与网络服务一起运行
- 尝试了不同的服务 url 命名约定,结果相同
概括
请提供有关使用 net.msmq 设置多个站点的任何见解。我对两个站点都使用了 value = 'localhost' 的 net.msmq 绑定。我认为这是机器名身份。
有什么方法可以诊断这个问题?
您可能想到的任何其他事情都可能会有所帮助。
昨天我们不得不推迟发布,因为在花费了大约 100 个工时之后,我们无法弄清楚问题出在哪里。也不能让它在我的开发机器中中断。
编辑
问题是在创建新站点命名约定后不起作用
net.msmq 服务,地址为“net.msmq://localhost/private/staging/msmqdataservice.svc” net.msmq 以地址“net.msmq://localhost/private/staging/msmqdataservice.svc”结束 MSMQ 队列 - > 名称 = "$private\staging/msmqdataservice.svc"
它使用服务名称 net.msmq://localhost/private/msmqdataservice.svc
但现在我不能让两个站点使用完全相同的端点。
有什么方法可以在同一台机器上具有不同 url 和不同队列的两个不同站点中拥有相同的端点?