【问题标题】:Can't get MassTransit with MSMQ to work on IIS Express无法使用 MSMQ 让 MassTransit 在 IIS Express 上工作
【发布时间】:2014-06-18 14:07:19
【问题描述】:

我有一个使用 MassTransit 和 MSMQ 的 .NET MVC 4 Web 应用程序。我们有几个使用 MSMQ 的旧版应用程序,因此我受限于该协议。我的 global.asax.cs 文件中 Application_Start() 中的客户端代码如下所示:

Bus.Initialize(sbc =>
{
    sbc.UseMsmq(a => a.UseSubscriptionService("msmq://localhost/mt_subscriptions"));
    sbc.ReceiveFrom("msmq://localhost/webconsole?tx=false&recoverable=false");
    sbc.UseControlBus();
    sbc.UseBinarySerializer();
});

我在 Windows 8.1 开发人员机器上运行此应用程序,当我在 IIS 8.5 上运行它时,此调用成功完成并且通信工作正常。但是,当我在 IIS Express 8.0 上运行它时,调用永远不会完成,最终会引发超时错误。我在 IIS Express 常见问题解答中找到了以下内容:

    Q: Does IIS Express support non-HTTP protocols such as net.tcp or MSMQ?

    A: No. IIS Express only supports HTTP and HTTPS as its protocol.

好的,很公平,但我不明白 Web 服务器与 MSMQ 有什么关系(除了在 HTTP 上使用 MSMQ,我不打算这样做);我没有任何“msmq://”路由或类似的东西。 MassTransit 不通过 Web 服务器直接使用 MSMQ 吗?而且我不敢相信我是唯一一个使用 MassTransit 在 IIS Express 上进行开发的开发人员。

关于这里发生了什么的任何见解?谢谢!

【问题讨论】:

    标签: c# asp.net msmq iis-express masstransit


    【解决方案1】:

    所以我终于想通了,我想我会发布答案,以防止其他人将头撞到这堵特殊的墙上。在启动期间,MassTransit 会查看 Windows 性能计数器是否可用。出于某种原因,在 IIS Express 上运行时检查它们的存在会导致调用挂起。您可以在此处找到有关该主题的完整讨论线程,这也是 SignalR 和温莎城堡开发人员的问题:https://groups.google.com/forum/#!topic/masstransit-discuss/Pz7ttS7niGQ。作为讨论的结果,MassTransit 开发人员在他们的 API 中添加了一个 DisablePerformanceCounters() 方法,并在创建服务总线时调用该方法解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多