日付プロパティを持つjsonオブジェクトをApiControllerに投稿すると、日付に逆シリアル化されません。
サーバー サイト コード:
public class MegaTestController : ApiController
{
// POST /megatest
public void Post(ttt value)
{
string sdf = "!sad";
}
}
public class ttt
{
public DateTime Date { get; set; }
public string Name { get; set; }
}
次に、フィドラーで POST リクエストを行います
POST http://localhost:62990/MegaTest HTTP/1.1
ユーザーエージェント: Fiddler
ホスト: ローカルホスト:62990
コンテンツ タイプ: テキスト/json
コンテンツの長さ: 54
{ "日付":"/日付(1239018869048)/", "名前":"おい" }
しかし、入ってくるオブジェクトにはName
プロパティ セットしかなく、Date
プロパティは {01.01.0001 00:00:00} です。
ヘッダーやプロジェクト設定が不足していませんか?
編集:リクエストは実際にはHttpClient
. でリクエストを送信する前に日付をフォーマットすることは可能HttpClient
ですか?
public Task<T> Create<T>(T item)
{
var service = new HttpClient();
service.BaseAddress = new Uri("http://localhost:62990");
var method = typeof(T).Name + "s"; // in this case it will be ttts
var req = new HttpRequestMessage<T>(item);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("text/json");
return service.PostAsync(method, req.Content).ContinueWith((reslutTask) =>
{
return reslutTask.Result.Content.ReadAsAsync<T>();
}).Unwrap();
}
var data = new ttt { Name = "Dude", Date = DateTime.Now };
Create(data);
編集:これは ASP MVC 4 ベータ版の既知のバグであり、ASP MVC 4 の最終バージョンでは、デフォルトの XML シリアライザーを使用するか、 Json.netのデフォルトの Json シリアライザーを切り替えるまで、json シリアライザーとしてJson.netを使用します。 . 詳細については、hanselman ブログをご覧ください。