WCF를 사용하여 "Application/X-WWW- 형태 인코 드"포스트 데이터를 지원하는 가장 좋은 방법?

StackOverflow https://stackoverflow.com/questions/604463

문제

"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 유형에 매핑되며 컨텐츠 유형에 따라 엔티티 본체를 직렬화/사제로 자동으로 선택하고 헤더를 허용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top