繁体   English   中英

无法使MSMQ具有MassTransit在IIS Express上工作

[英]Can't get MassTransit with MSMQ to work on IIS Express

我有一个使用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上进行开发的开发人员。

对这里发生的事情有任何见解吗? 谢谢!

所以我终于弄清楚了,我想我应该发布答案,也许可以避免其他人将头撞在这堵特殊的墙上。 在启动过程中,MassTransit会查看Windows性能计数器是否可用。 由于某些原因,在IIS Express上运行时检查它们的存在会导致挂起呼叫。 您可以在此处找到有关该主题的整个讨论线程,这对于SignalR和Windsor Castle开发人员来说也是一个问题: https ://groups.google.com/forum/#!topic/masstransit-discuss/Pz7ttS7niGQ。 讨论的结果是,MassTransit开发人员在其API中添加了DisablePerformanceCounters()方法,并在创建服务总线时调用该方法解决了我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM