У меня есть веб-приложение .NET MVC 4, которое использует MassTransit с MSMQ. У нас есть несколько устаревших приложений, использующих MSMQ, поэтому я ограничен этим протоколом. Мой клиентский код в Application_Start() в файле global.asax.cs выглядит так:
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.
Хорошо, достаточно честно, но я не понимаю, какое отношение веб-сервер имеет к MSMQ (кроме использования MSMQ через HTTP, чего я не пытаюсь сделать); У меня нет маршрутов "msmq://" или чего-то подобного. Разве MassTransit не использует MSMQ напрямую, минуя веб-сервер? И я не могу поверить, что я единственный разработчик, который разрабатывает IIS Express с помощью MassTransit.
Любое понимание того, что здесь происходит? Спасибо!