WCF 서비스에 작업 (메서드)이 있습니다. 조작에는 Json 컨텐츠의 매개 변수가 있습니다. 메시지 콘텐츠를 기반으로 다른 작업으로 WCF 서비스 호출을 리디렉션하는 방법
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
string NotifyAuditLineUpdated(AuditLineUpdatedModel notification);
이 매개 변수 AuditLineUpdatedModel, 나는 역 직렬화하는 동안 개체에 JSON 메시지를 매핑 DataContractAttributes 및 DataMemberAttributes를 사용하여 미리 definied 클래스를 만들었습니다.
는 그러나, 나는 문제가 클라이언트가 나는 하나의 클래스에 모든 경우를 결합 할 수 없습니다 같은 필드 이름에서 다른 JSON 메시지 구조을 가지고 있다는 것입니다 있습니다. 즉, Json 메시지는 다른 구조 (값이 아님) 일 수있는 필드가 있습니다; 따라서, 나는 다른 작업을 호출하려고 시도하고있다은 다양한 Json 메시지를 만족시킬 수있다.
지금까지 WCF가 서비스 수준에서 라우팅을 제공한다는 것을 알았습니다. 가능한 경우 운영 수준에서 전화를 라우팅하는 것이 궁금합니다. 다른 말로하면, 나는 다른 매개 변수 유형의 두 가지 연산을 가진 단일 서비스를 가지고있다. 전화를 받고 메시지 내용을 확인한 다음 메시지를 기반으로 적절한 작업으로 통화를 유도 할 수 있습니까?
귀하의 정보를 원하시면 WCF의 IDispatchMessageInspector (메시지 검사기 기능)을 사용해 보았습니다. 메시지 내용을 확인할 수 있었지만 도착 URL (To uri) 주소를 리디렉션하거나 변경할 수 없습니다. 참고 : 또한 클라이언트 서비스는 서로 다른 두 가지 경우에 대해 서로 다른 URI 요청을 보낼 수 없습니다.
- "대상을 리디렉션하거나 변경할 수 없습니다."- 이유를 알려주십시오. 새 메시지 유형을 처리 할 다른 서비스가있는 경우 해당 서비스에 대한 새 서비스 클라이언트를 만들고 새 서비스를 사용하여 메시지를 처리 한 다음 결과를 원래 서비스로 다시 반환 할 수 있어야합니다. –
안녕하세요 @KosalaW, 다음 줄을 실행하려고하면 오류가 발생합니다. 헤더 (MessageHeader.CreateHeader ("To", "To",))를 추가하십시오. 오류 메시지 : 봉투 버전 'EnvelopeNone (schemas.microsoft.com/ws/2005/05/envelope/none)'; 메시지 헤더 추가를 지원하지 않습니다. –
내 대답보기. 추가 질문이 있으면 알려주십시오. 새 서비스에 대한 헤더를 추가하지 않아도됩니다. 시체가 필요합니다. –