저는 며칠 동안이 문제로 어려움을 겪었습니다.NServiceBus Bus.Send(). IIS/Windows Server 2008에서 작동하지 않음 (콜백)
IIS 및 Windows Server 2008 R2에서 호스팅되는 간단한 WCF 웹 서비스가 있습니다.
var completionResult = new CompletionResult();
var updateTextMessage = new UpdateText { TextTemplateId = textTemplateId, Text = text };
var asyncResult = Global.Bus.Send(updateTextMessage).Register(x => completionResult = x.AsyncState as CompletionResult, null);
asyncResult.AsyncWaitHandle.WaitOne(10000);
if (completionResult.Messages != null && completionResult.Messages.Length > 0)
{
return ((UpdateTextResponse)completionResult.Messages[0]).ImageData;
}
return string.Empty;
나는 동기 방식으로 NSB를 사용하려고 시도하는 것은 나쁜 디자인 간주하지만 난 그냥 실험 그리고 난 정말이 작업을 좀하고 싶습니다 알고 다음과 같이 웹 서비스의 구현입니다. 따라서 문제는 메시지가 원격 끝점으로 성공적으로 보내지고 메시지가 성공적으로 처리되지만 원격 끝 점이 Bus.Reply를 수행 할 때 응답 메시지가 ether에서 손실된다는 것입니다. NSB의 최신 버전을 사용하고 있는데 이상한 일은 제 Windows 7 개발 컴퓨터에서 잘 작동합니다. 두 컴퓨터에서 Active Directory가 해제되어 있는지 확인했습니다. 또한 수신 엔드 포인트에서 Wireshark를 실행했으며 패킷 데이터에 수신 메시지가 표시되는지 확인했습니다. 뭔가 IIS와 jive되지 않는 것 같습니다. 또한 양쪽 끝점에 대해 로깅 임계 값을 DEBUG로 전환했으며 이상한 일은 일어나지 않았습니다. 또한
IIS Config (this side is not getting the response)
<MsmqTransportConfig InputQueue="Web.InputQueue" ErrorQueue="Web.ErrorQueue" MaxRetries="5" NumberOfWorkerThreads="1"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Messages" Endpoint="Node.Distributor.DataInputQueue"/>
</MessageEndpointMappings>
</UnicastBusConfig>
---------------------------------------------------------------
Endpoint which does the reply
<MsmqTransportConfig ErrorQueue="Node.ErrorQueue" InputQueue="Node.InputQueue" MaxRetries="5" NumberOfWorkerThreads="1"/>
<UnicastBusConfig DistributorControlAddress="Node.Distributor.ControlInputQueue" DistributorDataAddress="Node.Distributor.DataInputQueue" />
나 : 여기
Bus = NServiceBus.Configure.WithWeb()
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
는 엔드 포인트에 대한 CONFIGS 있습니다 : 송신 엔드 포인트는 여기에 웹 구성 요소에 대한 내 Application_Startup의 코드가 "에 ... 메시지를 보내는"보통 말한다 통신을 테스트하기 위해 두 개의 독립형 NServiceBusHost 응용 프로그램을 만들었고 성공적으로 작동했습니다. 나는 반송 주소를 하드 코딩하고 .Reply를 .Send로 대체했지만 실제 목적지를 지정했지만 여전히 작동하지 않았다. 다시 IIS와 관련이있는 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다!
nservicebus 구성 정보를 게시 할 수 있습니까? 또한 버스의 주소를 확인할 가치가 있습니다. 원격 끝점에서 다시 확인()하십시오. – Rajesh
오케이 configs를 게시했습니다. 감사! – thehin