2011-07-26 14 views
8

Fiddlerを使用する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

ファンタスティック:

はその要求を受信するには、次のような契約を持っている必要があります。それは夢のように働いた。 1日の不満の後、私は最終的に解決策を持っています。 –

+0

素晴らしいですが、私はnullデータがサービスに渡されて苦労しており、あなたの提案は問題を解決しました。共有してくれてありがとう。 – Signcodeindie

+0

私は、魔法のライン 'BodyStyle = WebMessageBodyStyle.Bare'は過去に私を悩ましていたものだったと思う*時間を数えたくない!このスニペットを投稿してくれてありがとう! –

関連する問題