2014-06-18 1 views
2

MSMQ와 함께 MassTransit을 사용하는 .NET MVC 4 웹 응용 프로그램이 있습니다. MSMQ를 사용하는 여러 가지 기존 앱이 있으므로 해당 프로토콜에 제약이 있습니다.MSMQ를 사용하여 MassTransit을 IIS Express에서 작동시키지 못함

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(); 
}); 

나는 윈도우 8.1 개발자 상자에이 응용 프로그램을 실행 해요, 때 예상대로이 호출이 성공적으로 & 통신 작업을 완료 : 내 global.asax.cs 파일 위해 Application_Start()에서 내 클라이언트 코드는 다음과 같습니다 IIS 8.5에서 실행합니다. 그러나 IIS Express 8.0에서 실행하면 호출이 완료되지 않고 결국 제한 시간 오류가 발생합니다.

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. 

, 좋아 충분히 공정,하지만 웹 서버가 나는 시도하고 있지 않다, 이는 HTTP를 통해 MSMQ를 사용하여 제외 (MSMQ과 관련이있다 이해하지 않는다 : 나는하여 IIS 익스프레스 자주 묻는 질문에 다음과 발견 할 것); 나는 "msmq : //"경로 나 그와 비슷한 것을 가지고 있지 않다. MassTransit은 웹 서버를 거치지 않고 직접 MSMQ를 사용합니까? 그리고 나는 MassTransit으로 IIS Express를 개발 한 유일한 개발자라고 믿을 수 없습니다.

여기에 무슨 일이 일어나고 있는지에 대한 통찰력이 있으십니까? 감사!

답변

0

나는 마침내 이것을 알아 냈습니다. 아마도 누군가 다른 사람이이 특정 벽에 머리를 부딪히는 것을 막을 수있는 답변을 게시 할 것이라고 생각했습니다. 시작하는 동안 MassTransit은 Windows 성능 카운터를 사용할 수 있는지 확인합니다. 어떤 이유로 IIS Express에서 실행 중일 때 그 존재를 확인하면 중단 된 호출이 발생합니다. 주제에 대한 전체 토론 스레드를 여기에서 찾을 수 있습니다. 또한 SignalR 및 Windsor Castle 개발자의 문제였습니다 : https://groups.google.com/forum/#!topic/masstransit-discuss/Pz7ttS7niGQ. 논의 결과, MassTransit 개발자는 DisablePerformanceCounters() 메서드를 API에 추가했으며 서비스 버스를 만들 때 해당 메서드를 호출하면 문제가 해결되었습니다.

관련 문제