私は次のようなWCFデータサービスサービスを実装しました:
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class SampleService : DataService<SampleDatabase>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.SetEntitySetAccessRule("SampleData", EntitySetRights.All);
// config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
config.UseVerboseErrors = true;
}
}
ただし、他の場所で文書化されているように、日付はフレームワークのJSONシリアル化コードによって正しくフォーマットされていません。日付が有効なISO形式で出力されません。さらに驚くべきことは、WCFが出力される日付をラウンドトリップしないことです。したがって、「/ Date(1325376000000)/」のような日付を出力しますが、有効な日付と同じ値を返しません。
ハンゼルマンには、WebAPI用に修正する方法があります:http: //www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx
そして、MVCシリアル化の同様の修正を見つけました: http ://www.dalsoft.co.uk/blog/index.php/2012/01/10/asp-net-mvc-3-improved-jsonvalueproviderfactory-using-json -ネット/
私たちのクライアントはMVC3と.NET4を指定しているので、WebAPIが出ていると思うので、.NET4にあるMVC3+ WCFDataServicesでこれを解決したいと思います。 JSON.NETを使用して、シリアル化/逆シリアル化を.NETとJavascriptの両方が理解できるISO形式にオーバーライドします。しかし、このためにJSONシリアル化をオーバーライドするためのガイダンスを見つけることができません。
この問題は、.NET 4のWCFデータサービス専用にどのように修正できますか?