我使用带信号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; }
}
如何修复此异常?