0

我已经实现了 asp.net web api 和信号器,以便将数据推送到客户端。

有效负载包括通过 Asp.Net Web API 中的 signalR 将 DateTime 值推送到浏览器。

问题是当在浏览器上接收数据时,我得到 iso 格式的日期,即 2012-12-04T19:30:18,但我想要 microsoftdate 格式的数据,即“\date(...)”

为此,我尝试在 asp.net web api 的 global.asax 中的 application_start 事件中进行以下操作:

    var json =config.Formatters.JsonFormatter;
        json.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;

但仍将日期设为“2012-12-04T19:30:18”。

任何想法?

4

2 回答 2

4

从 SignalR 1.0 开始,您可以在应用程序开始时注册自己的 JsonNetSerializer,并使用如下自定义设置:

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
using Newtonsoft.Json;

namespace MyApp
{
    public class Global : HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            var settings = new JsonSerializerSettings();
            settings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
            var serializer = new JsonNetSerializer(settings);

            GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer), () => serializer);
        }
    }
}
于 2012-12-04T23:30:36.460 回答
0

我没有完全遵循您遇到的问题,但我假设您正在尝试将当前的 DateTime 从服务器传递到客户端并读取它?

如果是这样,您可以通过以下方式发送/解析(无需任何序列化更改): SignalR datetime format

这是读取 DateTIme 的 JavaScript 方式。

于 2012-12-04T23:20:11.190 回答