Newtonsoft.Json出错:已添加具有相同键的项目

时间:2016-08-23 05:43:59

标签: c# json.net signalr

我使用带信号R的Newtonsoft.Json将数据发送到客户端。以下代码从数据库中获取数据,并且应该发送它,但它提供了异常:

an item with the same key has already been added

代码是:

using Makbin.Data;
using Microsoft.AspNet.SignalR;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Hosting;

namespace Makbin.Web.Hubs
{
    public class LogBackgroundTicker : IRegisteredObject
    {
        private readonly MakbinRepository _repository;      
        private Timer logsTimer;
        private IHubContext hub;

        public LogBackgroundTicker()
        {
            _repository = new MakbinRepository();

            HostingEnvironment.RegisterObject(this);

            hub = GlobalHost.ConnectionManager.GetHubContext<LogHub>();

            logsTimer = new Timer(OnLogsTimerElapsed, null,
                TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(7));
        }

        private void OnLogsTimerElapsed(object sender)
        {
            var result = _repository.Syslog.Select(x => x).Take(300);
            var finalResult = JsonConvert.SerializeObject(result, Formatting.None,
                        new JsonSerializerSettings()
                        {
                            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                        });
            hub.Clients.All.broadcastMessage(DateTime.UtcNow.ToString(), finalResult);
        }

        public void Stop(bool immediate)
        {
            logsTimer.Dispose();

            HostingEnvironment.UnregisterObject(this);
        }
    }
}

这是Syslog类:

public class Syslog
    {
        public Guid LogId { get; set; }
        public Guid DeviceId { get; set; }
        public string Name { get; set; }
        public string Facility { get; set; }
        public string Severity { get; set; }
        public string DevTime { get; set; }
        public string Text { get; set; }
        public DateTime Time { get; set; }
        public virtual Peripherals Peripheral { get; set; }
    }

如何修复此异常?

0 个答案:

没有答案