WCF를 사용하여 "Application/X-WWW- 형태 인코 드"포스트 데이터를 지원하는 가장 좋은 방법?
-
03-07-2019 - |
문제
"Application/X-WWW-FORM-URLENCODED"게시물 데이터를 수용하는 편안한 웹 서비스 엔드 포인트를 정의하는 W3C 사양을 기반으로 WCF 서비스를 구축하고 있습니다. WCF는 기본적으로 이러한 유형의 메시지 인코딩을 지원하지 않으며 다음과 같은 계약을 작성하는 여러 가지 다른 예를 찾았습니다.
XElement Query_Post(Stream postData);
그리고 구현 내에서 디코딩 postData
스트림을 사용하여 HttpUtility.ParseQueryString
방법.
WCF에서보다 강력하게 입력 한 "응용 프로그램/x-www-form-urlencoded"를 지원하는 방법을 아는 사람이 있습니까?
운영 계약이 다음과 같습니다.
XElement Query_Post(string query, string [] params);
해결책
가장 좋은 방법은 사용하는 것입니다 Stream
처럼 WCF가있는 원시 HTTP 게시물 또는 당신이 말하는 것. 그 이유는 WCF가 서비스 코드에서 모든 커뮤니케이션 수준의 물리적 레이아웃을 추상화하기 때문입니다. 이상적으로는 스위치를 뒤집어서 비누로 변하거나 휴식을 취할 수있는 서비스를 만들고 싶을 것입니다.
기본적으로 지원하려면 아마도 확장해야 할 것입니다. WebHttpBinding
또는 자신의 구속력을 높이고 구현하십시오 사용자 정의 인코더. 링크 된 게시물이 말한 것처럼 이것은 출력에 대칭입니다. WCF가 비 XML/JSON 물건을 출력하기 위해 팔을 비틀어 야합니다.
다른 팁
WCF REST Contrib 라이브러리는이 기능을 활성화합니다.
https://github.com/mikeobrien/wcfrestcontrib
Pox Formatter 및 Form URL 인코딩 된 Formatter가 포함되어 있으며 쉽게 직접 만들 수 있습니다. Formatters는 MIME 유형에 매핑되며 컨텐츠 유형에 따라 엔티티 본체를 직렬화/사제로 자동으로 선택하고 헤더를 허용합니다.