MSMQ를 사용하는 SendPort가있는 BizTalk 2006 앱이 있습니다.MSMQIntegrationBinding이있는 WCF가 큐에서 메시지를 가져 오지 않습니다.
WCF winforms 호스팅 WCF 서비스 (개발 환경에서 프로덕션 환경에서 호스팅으로 Windows 서비스 사용)도 있습니다.
내가 만든 WCF 서비스 중 하나에는 MSMQIntegrationBinding이 있습니다 (BizTalk가 WCF 서비스가 아니기 때문에 NetMSMQBinding을 사용할 수 없음).
업무 일지 옵션을 활성화하고 저널 대기열에 메시지가 표시되지만 대기열이 비어 있고 WCF 서비스가 메시지를 선택하지 않아서 메시지가 원격 대기열에 올바르게 배치 된 것을 확인합니다.
아무도 내게이 문제를 해결하기 위해보아야 할 단서를 줄 수 있습니까?
은 (편집 1) :이 주제에 대해 좀 더 연구를 한 :
- 당신이 NetMSMQBinding가 아니라 때문에 MSMQIntegrationBinding를 사용해야 R2 MSMQ와 BizTalk 2006와 통신 WCF - 투 - WCF
- 그래서 MSMQIntegrationBinding에 머물러 있습니다.
- MSMQIntegration 바인딩은 DataContract serializer를 사용하지 않습니다. 대신 MsmqMessageSerializationFormat 속성을 기반으로 데이터를 serialize합니다. 기본값은 XmlSerializer가 사용됨을 의미하는 MsmqMessageSerializationFormat.Xml입니다. MSMQ 통합 전송은 네이티브 MSMQ/System.Messaging 응용 프로그램과 상호 작용하도록 특별히 설계되었습니다.
- MSMQIntegration 바인딩은 일반적인 이전 XmlSerializer를 사용하기 때문에 svcutil.exe를 사용하는 쉬운 기능이 없습니다. 내 데이터 클래스를 생성합니다. 내가 WCF에서 진단 추적 데이터를 확인 :
(편집 2) : 그래서 .... 손으로 내 datacontract 클래스를 생성
(http://social.msdn.microsoft.com/Forums/en/wcf/thread/2d48fe90-5c2a-4156-8a3f-2e21d5638fa1 및 http://www.danrigsby.com/blog/index.php/2008/03/07/xmlserializer-vs-datacontractserializer-serialization-in-wcf/ 참조) pfffffffffff해야 서비스가 제거되고 deserialize 예외로 인해 메시지가 삭제되었습니다. 유일한 해결책은 이제 손으로 datacontract 클래스를 만드는 것입니다 ...
(편집 3) : svcutil.exe 대신 xsd.exe 도구를 사용하여 datacontract 클래스를 만들었으므로 여기서는 수공 작업을하지 마십시오.) 따라서 결론은 WCF 서비스 메서드에서 매개 변수로 사용되는 데이터 계약 클래스에 xsd.exe를 사용하는 것입니다. MSMQIntegrationBinding은 모든 DataContract 유형을 기본 DataContractSerializer 대신 XMLSerializer와 직렬화 할 수 있도록합니다.
Daniel에게 감사드립니다. 이미 알고 있었지만, .config 파일에서 인용했습니다 .--) WCF 로그를보기 위해 활성화 할 것입니다. . –
Daniel, 나는 당신의 대답을 가장 유용하다고 평가했고, 그 해결책은 흔적 정보를 찾는 것으로 easly 발견되었습니다. –
잘 했어, 패트릭. 네가 해결했기 때문에 기쁘다. –