昨天我开始开发一个SignalR应用程序 - 我创建了2个不同的项目(服务器和客户端),并且一切都很顺利。SignalR项目中的Json引用冲突
今天,我再次打开它 - 现在它造成问题。
这是我的客户端代码:
signalrHub.client.updateVehicle = function (dbVehicle) {
$.each(Vehicles, function() {
var vehicle = this;
if (vehicle.id == dbVehicle.id && vehicle.dataset == dbVehicle.dataset) {
vehicle.move(dbVehicle.latitude, dbVehicle.longitude);
}
});
};
$.connection.hub.url = "http://localhost:52522/signalr";
signalrHub = $.connection.routeHub;
$.connection.hub.start().done(function() {
signalrHub.server.joinDataset("JR");
signalrHub.server.getVehicles("JR").done(function (response) {
$.each(response.vehicles, function() {
Vehicles.push(new Vehicle(this));
});
$.each(Vehicles, function() {
this.addToMap();
});
}).fail(function(error) {
alert(error);
});
});
的故障处理程序被调用,并出现以下错误: 无法加载文件或程序集“Newtonsoft.Json,版本= 6.0.0.0,文化=中立, PublicKeyToken = 30ad4fe6b2a6aeed'或它的一个依赖项。定位的程序集清单定义与程序集引用不匹配。 (从HRESULT异常:0x80131040)
我试过更新Newtonsoft.Json到6.0 - 但后来我得到一个编译错误寻找版本4.5。
这是在服务器端的GetVehicles:
public async Task<Vehicles> GetVehicles(string dataset)
{
var vehicles = await Vehicles.GetData(dataset, DateTime.Today, DateTime.Today.AddDays(1));
Clients.Caller.updateVehicle(vehicles.Data.First());
return vehicles;
}
,这是它失败的行:
Clients.Caller.updateVehicle(vehicles.Data.First());
如果我删除 - 该方法将一直执行到结束,并且客户端超时并从不接收车辆对象。
我没有一个.NET的问题。 4.5我的意思是Newtonsoft.Json v 4.5 – Inrego
啊,好的。我会尝试卸载 - 包Newtonsoft.Json,干净的项目,并再次尝试安装包。如果您继续收到任何程序集加载错误,我会尝试使用[fusion日志查看器](http://msdn.microsoft.com/zh-cn/library/e74a18c4(v = vs.110).aspx)进行故障诊断。您的项目中是否还有其他项目或依赖项可能依赖于Newtonsoft.Json? –
谢谢汤姆!你带领我正确地检查我的其他项目是否使用了Newtonsoft.Json。我在解决方案中有另一个项目,我从NuGet经理添加了Json,并且使用了最新版本。这导致了signalR项目中需要4.5的冲突。我将依赖项移除到6.0,并添加了对signalR项目使用的相同dll的引用,现在它正在工作。 – Inrego