2017-08-10 6 views
0

これは私の最初の投稿ですので、十分な情報を提供しないと私を許してください。私はWCF WebサービスにDateTimeプロパティを含むEmployeeLoginオブジェクトを送信しようとしているWPFアプリケーションがあり、このEmployeeLogIn()メソッドを呼び出すときに400の不正なリクエストエラーが発生し続けます。私は非常に多くの場所を検索して答えを出しましたが、私の特定の状況に直接答えは出ません。WCFはdatetimeプロパティ(400の悪い要求)を持つオブジェクトを受け付けません

だから私の主な質問は:JSON形式(\/Date(1237951967000)\/)に変換されますと、有効なDateTimeプロパティとしてWCFサービスによって受け入れられます自動的に以下のメソッドを介して設定されているDateTimeプロパティを持つオブジェクトを送信、またはん上記のJSON文字列に変換して文字列としてメソッドに渡しますか?

EDITv2:私のWPFアプリは、上記の正しい形式でこのDateTimeオブジェクトを送信し、代わりに"2017-08-11T13:47:55.2187627-04:00"として、それを送信し、私は正しいDateTime形式にそれを取得する方法を把握することはできませんされていません。私は文字列としてこの形式にすることができますが、このポストの最後に述べられている理由により、それは最後の努力になるでしょう。 EmployeeLoginが以下に定義される

EmployeeLogin EmpLogin = new EmployeeLogin 
      { 
       EmployeeID = (int)UserName, 
       Password = Pass, 
       Latitude = 33.45, 
       Longitude = 134.44, 
       TimeIn = DateTime.Now 
      }; 
HttpResponseMessage response = await 
Client.PostAsJsonAsync(string.Format(@"{0}{1}", URL, method), 
EmpLogin); 

[DataContract] 
public class EmployeeLogin 
{ 
    [DataMember] 
    public int EmployeeID { get; set; } 
    [DataMember] 
    public string Password { get; set; } 
    [DataMember] 
    public DateTime TimeIn { get; set; } 
    [DataMember] 
    public Nullable<double> Latitude { get; set; } 
    [DataMember] 
    public Nullable<double> Longitude { get; set; } 
} 

とEmployeeLogInメソッドシグネチャは以下の通りである:

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, 
ResponseFormat = WebMessageFormat.Json, BodyStyle = 
WebMessageBodyStyle.WrappedResponse)] 
    [return: MessageParameter(Name = "Data")] 
    [OperationContract] 
    List<int> EmployeeLogIn(EmployeeLogin e); 

DateTimestringプロパティに変更し、Webサービス側のDateTimeに変換するのが最も簡単な解決方法ですが、絶対に必要でない限り、Webサービスを変更しないようにしています。前もって感謝します。

+0

WCFがDateTimeをシリアル化およびデシリアライズする方法を知りたければ、DateTimeを返すWCFエンドポイントを記述します。応答を調べるには、Fiddlerまたは同等の機能を使用します。 Fiddler(または同等のもの)は、 'PostAsJsonAsync'がDateTimeをどのようにシリアライズしているかを正確に理解するのに役立ちます。 –

+0

返信ありがとうございます。 'PostAsJsonAsync'は間違ってFiddler:' 'EmployeeID":6、 "Password": "6490"、 "TimeIn": "2017-08-11T13:47: 55.2187627-04:00 "、" Latitude ":33.45、"経度 ":134.44}'どのようにして 'DateTime'を適切な形式にするのですか? – Chiron

+0

私はそれを最終的に考え出した!リンクされたポストの質問に対する答えは問題を完全に説明してくれて、完璧に機能する解決策を提供します: https://stackoverflow.com/questions/33072965/webservice-not-deserializing-some-objects – Chiron

答えて

0

私は最終的に数週間の検索の後、この質問に対する答えを見つけました。私が経験していた問題は、以下にリンクされているポストで完全に説明されています。ポストで提供されている問題の解決策は、私にとって完璧に機能しました。ここに私の問題にpost with the solutionです。

関連する問題