ASMX 웹 서비스에 맞춤 인증 헤더를 추가 할 수있는 것처럼 basicHttpBinding의 WCF 수신/발신 메시지에 맞춤 SOAP 헤더를 추가 할 수 있습니까? 이러한 사용자 지정 SOAP 헤더는 .net 2.0/1.1 웹 서비스 클라이언트 (WSDL.EXE 도구로 액세스 가능)를 사용하여 액세스 할 수 있어야합니다.wcf에서 맞춤 비누 헤더를 추가하는 방법은 무엇입니까?
답변
Codeplex의 WCF Extras을 확인하십시오. - 특히 사용자 정의 SOAP 헤더를 제공하는 WCF의 쉬운 확장 라이브러리입니다.
또 다른 옵션은 WCF 서비스에서 WCF message contracts을 사용하는 것입니다.이 옵션을 사용하면 WCF SOAP 헤더를 쉽게 정의하고 설정할 수 있습니다.
[MessageContract]
public class BankingTransaction
{
[MessageHeader]
public Operation operation;
[MessageHeader]
public DateTime transactionDate;
[MessageBodyMember]
private Account sourceAccount;
[MessageBodyMember]
private Account targetAccount;
[MessageBodyMember]
public int amount;
}
여기서 "연산"과 "transactionDate"는 SOAP 헤더로 정의됩니다.
이러한 방법 중 하나라도 도움이되지 않는다면 확장 기능으로 작성할 수있는 WCF 메시지 검사기의 개념을 확인해야합니다. 그들은 당신을 허용합니다. 클라이언트의 모든 발신 통화의 메시지에 특정 헤더를 삽입하고 사용하기 위해 서버의 메시지에서 메시지를 검색합니다.
메시지 관리자 작성 방법의 시작점과 프로젝트 설정에 포함하는 방법은 블로그 게시물 Handling custom SOAP headers via WCF Behaviors을 참조하십시오.
클라이언트 측 IClientMessageInspector
는 두 가지 방법을 예 : BeforeSendReply
및 AfterReceiveRequest
BeforeSendRequest
AfterReceiveReply
및 서버 측 IDispatchMessageInspector
반대 방식을 갖는다을 정의한다.
이렇게하면 전선을 가로 지르는 모든 메시지에 헤더를 추가 할 수 있습니다. 여기
우리가 자동적으로 서버에 클라이언트의 로케일 정보를 통해 (언어와 문화 정보)를 전송하는 데 사용하는IClientMessageInspector
구현에서 미리보기입니다 - 어떻게 시작하는 당신에게 아이디어를 줄 것이다 :
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
International intlHeader = new International();
intlHeader.Locale = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
MessageHeader header = MessageHeader.CreateHeader(WSI18N.ElementNames.International, WSI18N.NamespaceURI, intlHeader);
request.Headers.Add(header);
return null;
}
서버 측에서는 그 헤더의 존재 유무를 확인한 다음 SOAP 헤더에서 해당 헤더를 추출하여 사용합니다.
UPDATE : - 좋은 소식은,이 여전히 잘 작동합니다 - 자세한 내용은이 블로그 게시물 Custom SOAP Headers: WCF and ASMX를 참조 좋아, 당신이있어 클라이언트는 WCF를 사용하여 .NET 2.0 하지에 있습니다. 서버 측의 메시지 관리자를 사용하여 .NET 2.0 클라이언트가 보내는 사용자 지정 헤더를 스니핑하고 추출 할 수 있습니다.
감사합니다. marc_s, WCF Extras를 사용해 보았습니다. "XmlSerializerFormat"특성을 서비스 계약 WCF Extras에 추가하여 서비스에 액세스하는 동안 오류가 발생했습니다. WCF Extras와 같은 다른 솔루션이 있습니까? ASMX 서비스에서 SoapHeader를 추가 할 때 MessageContract를 모든 메소드에 속성으로 추가 할 수 있습니까? 내 요구 사항은 WCF 서비스에 대한 모든 호출에 대해 일부 (동일한 사용자 이름 및 암호) 데이터를 전송해야한다는 것입니다. 이 방법을 구현할 방법이 있습니까? – nRk
yah marc_s, 멋지네요. 그러나 언급 된 기사에서 클라이언트는 .net 3.0 이상이어야합니다. 그러나 제 경우에는 클라이언트가 .net 2.0 및 1.1에 있습니다. 이 코드를 구현할 수 있습니까? – nRk
- 1. .net의 웹 서비스에 비누 헤더를 추가하십시오.
- 2. Silverlight에 SOAP 헤더를 추가하는 방법은 무엇입니까?
- 3. SOAP 메시지에 보안 헤더를 추가하는 방법은 무엇입니까?
- 4. WSGI 미들웨어에서 http 헤더를 추가하는 방법은 무엇입니까?
- 5. Apache에서 302 리디렉션에 헤더를 추가하는 방법은 무엇입니까?
- 6. HttpClient 요청에 요청 헤더를 추가하는 방법은 무엇입니까?
- 7. soap4r에서 비누 호출의 http 헤더를 설정하는 방법은 무엇입니까?
- 8. magento에서 필드별로 맞춤 정렬을 추가하는 방법은 무엇입니까?
- 9. 젠드 프레임 워크 : 맞춤 비누 예외 잡기
- 10. 비누 헤더를 추가 - 노드를 업데이트 - 문서
- 11. SoapHandler에서 xpath로 비누 헤더를 구문 분석하는 방법
- 12. 맞춤 이메일 헤더를 만드는 방법
- 13. IMAP을 통해 맞춤 RFC822 헤더를 추가 하시겠습니까?
- 14. 플렉스 웹 서비스 호출에 "플랫"메시지 헤더를 추가하는 방법은 무엇입니까?
- 15. DOM 폼 요소에 권한 헤더를 추가하는 방법은 무엇입니까?
- 16. System.Net.Mail SMTP 클래스에 사용자 정의 헤더를 추가하는 방법은 무엇입니까?
- 17. 웹 서비스 및 맞춤 비누 핸들러
- 18. Umbraco - 맞춤 알림을 추가하는 방법은 무엇인가요?
- 19. route-me에 맞춤 맵 소스를 추가하는 방법은 무엇입니까?
- 20. Django의 관리 콘솔에 맞춤 메소드를 추가하는 방법은 무엇입니까?
- 21. 사용자가 엔티티에 맞춤 속성을 추가하는 가장 좋은 방법은 무엇입니까?
- 22. 내 WordPress 템플릿 파일에 맞춤 URL을 추가하는 방법은 무엇입니까?
- 23. 워드 프레스의 모든 위젯에 맞춤 클래스를 추가하는 방법은 무엇입니까?
- 24. Chrome 컨텍스트 메뉴에 맞춤 항목을 추가하는 방법은 무엇입니까?
- 25. 그리드의 로딩 맵에 맞춤 메시지를 추가하는 방법은 무엇입니까? ExtJs 3. *
- 26. iOS 주소록에 프로그래밍 방식으로 "맞춤 라벨"을 추가하는 방법은 무엇입니까?
- 27. iPhone의 이미지에 맞춤 메타 데이터 태그를 추가하는 방법은 무엇입니까?
- 28. android 2.0의 연락처에 맞춤 데이터/필드를 추가하는 방법은 무엇입니까?
- 29. Android에서 기존 이메일 클라이언트에 맞춤 메뉴 항목을 추가하는 방법은 무엇입니까?
- 30. Magento : 코드를 통해 맞춤 모듈 블록에 링크를 추가하는 방법은 무엇입니까?
메시지 감찰관에 대한 정보로 내 대답이 업데이트되었습니다. –
SOAP 헤드셋에 대한 ASMX/WCF 상호 운용성에 대한 정보가 다시 업데이트되었습니다. –
감사합니다. marc_s가 좋겠지 만 시험해 볼 것입니다. – nRk