我已经实现了这样的 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)/”,但不接受相同的值作为有效日期作为回报。
Hanselman 有如何为 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 和 .NET 4,所以我认为 WebAPI 已经过时了,所以我想为 .NET 4 中的 MVC3 + WCF 数据服务解决这个问题。我从上述修复中的理解是,最好的修复是使用 JSON.NET 将序列化/反序列化覆盖为 .NET 和 Javascript 都可以理解的 ISO 格式。但是我找不到任何关于为此覆盖 JSON 序列化的指导。
如何专门针对 .NET 4 中的 WCF 数据服务解决此问题?