2011-07-26 4 views
8

피들러 사용하기 JSON 메시지를 내 WCF 서비스에 게시합니다. 이 서비스는 System.ServiceModel.Activation.WebServiceHostFactory에서 POST이 이루어JSON의 WCF REST POST : 매개 변수가 비어 있습니다.

[OperationContract] 
[WebInvoke 
(UriTemplate = "/authenticate", 
     Method = "POST", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.WrappedRequest 
     )] 
String Authorise(String usernamePasswordJson); 

, 나는 코드에 침입 할 수 있어요 사용하지만 매개 변수 usernamePasswordJson입니다. 왜 이런거야?

참고 : 나는 벌거 벗은BodyStyle을 설정 Strangly 때, 포스트도 디버깅 나를 위해 코드에 도착하지 않습니다.

다음은 피들러 화면입니다 : enter image description here

답변

18

당신은 String 형 같은 매개 변수를 선언, 그래서 JSON 문자열을 기대하고있다 - 당신이 그것을에 JSON 객체를 전달하고 있습니다.

[ServiceContract] 
public interface IMyInterface 
{ 
    [OperationContract] 
    [WebInvoke(UriTemplate = "/authenticate", 
      Method = "POST", 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Bare)] 
    String Authorise(UserNamePassword usernamePassword); 
} 

[DataContract] 
public class UserNamePassword 
{ 
    [DataMember] 
    public string UserName { get; set; } 
    [DataMember] 
    public string Password { get; set; } 
} 
+0

환상적인 :

그 요청을 수신하려면 아래와 같은 계약이 필요합니다. 그것은 마치 꿈처럼 일했습니다. 좌절의 날이 지나면 마침내 해결책이 생겼습니다. –

+0

환상적입니다. null 데이터가 서비스로 전달됨에 따라 고심하고 있었고 귀하의 제안으로 문제가 해결되었습니다. 공유해 주셔서 감사합니다. – Signcodeindie

+0

나는 마술 줄'BodyStyle = WebMessageBodyStyle.Bare'가 과거에 나를 괴롭혔던 것 같다고 생각합니다 * 시간을 계산하고 싶지 않습니다! 이 스 니펫을 게시 해 주셔서 감사합니다! –

관련 문제