2017-11-21 13 views
0

私はここでいくつかの同様の質問を見ましたが、この特定の問題には何も働いていません。WCF RESTサービス:メソッドのパラメータ(オブジェクト)は常にnullです

私はWCF Rest Webサービスを持っており、GETのために正常に動作しています。 1つのメソッドはPOSTで、メソッドがWebサーバー上で実行されているときに、jsonパラメーターを渡すときはいつでも、渡されるパラメーターはnullです。

クライアントコール:

public async Task Test() 
    { 
     HttpClient client; 
     client = new HttpClient(); 
     client.MaxResponseContentBufferSize = 2147483646; 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     ContactParameter cp = new ContactParameter(); 
     cp.ApptDateFrom = DateTime.Now; 
     cp.ApptDateTo = DateTime.Now.AddDays(1); 
     cp.Code = "00"; 
     cp.Type = Enums.ContactType.Person; 
     cp.Status = string.Empty; 

     string RestUrl = "http://localhost:61919/data.svc/GetBooked"; 
     var uri = new Uri(string.Format(RestUrl, string.Empty)); 

     JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings 
     { 
      DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, 
     }; 

     //json string = {"Code":"00","ApptDateTo":"2017-11-22T14:02:01.8758558+00:00","ApptDateFrom":"2017-11-21T14:02:01.8718458+00:00","Type":67,"Status":"A"} 
     var json = JsonConvert.SerializeObject(cp); 

     var content = new StringContent(json, Encoding.UTF8, "application/json"); 
     var response = await client.PostAsync(uri, content); 
    } 

WCF Webサービス契約:

[OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetBooked")] 

    List<Contact> GetBooked(ContactParameter contactParameter); 

問い合わせパラメータタイプ

01ここ

コードです

namespace CatService.Types 
    { 
     [DataContract (Name = "contactParameter")] 
     public class ContactParameter 
      { 
       [DataMember(Name = "Code")] 
       public string Code { get; set; } 
       [DataMember(Name = "ApptDateTo")] 
       public DateTime ApptDateTo { get; set; } 
       [DataMember(Name = "ApptDateFrom")] 
       public DateTime ApptDateFrom { get; set; } 
       [DataMember(Name = "Type")] 
       public Enums.Enums.Type Type { get; set; } 
       [DataMember(Name = "Status")] 
       public string Status { get; set; } 

      } 
    } 

私はWebMessageBodyStyle.Bareを変更しようとしましたが、次にStatusCode:400、ReasonPhrase: 'Bad Request'を取得しました。 文字列だけを受け入れるテストメソッドを試してみたら、それは機能します。

答えて

0

同じ問題が発生します。私は、別のコンソールアプリケーションでPostメソッドを試してみることをお勧めします。 POSTメソッドがURLにないためです。

0

これは日時の問題で、私は以前の投稿で答えを実装しませんでした。 Basicaly:あなたがシリアライズその後

JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings 
     { 
      DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, 
     }; 

....

var json = JsonConvert.SerializeObject(jsonString, microsoftDateFormatSettings); 
関連する問題