更新Newtonsoft.Json后报错误

来源:本网整理

首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一个DataTable对象,如下:DataTable dt=new DataTable();DataColumn dcName=new DataColumn("Name");DataColumn dcAge=new DataColumn("Age");DataColumn dcCity=new DataColumn("City");dt.Columns.Add(dcName);dt.Columns.Add(dcAge);dt.Columns.Add(dcCity);for(int i=0;i;i+){DataRow dr=dt.NewRow();dr[0]="Name"+i;dr[1]="Age"+i;dr[2]="City"+i;dt.Rows.Add(dr);}序列化:string json=JsonConvert.SerializeObject(dt);Console.WriteLine(json);www.zgxue.com防采集请勿采集本网。

更新Newtonsoft.Json后报异常。

问题描述:

1.vs2013新建4.5.1web 项目,Newtonsoft.Json版本为5.0.6

首先查询出来 是一个Datatable或者是一个LIST 转化为JSON 然后JS 读取JSON 至于转化JSON 方法很多 1.自己百度 Datatable转化JSON 2.如果你是NET 2.0 就要用 微软AJAX的System.Web.Extensions.dll 也可以去

2.运行项目,正常

是你的对象结构问题 对象结构应该类似这样的 class objJson { public objData data{get;set} public int totalCount{get;set;} } class objData { public List<DataItem>list{get;set;} } class

2.通过NuGet把Newtonsoft.Json更新到6.0.4

每个版本都有,取决于你的使用newtonsoft.json的项目是什么版本,是4.0就下载newtonsoft4.0,4.5就下载4.5

3.运行项目,抛出异常:

对象转json在.net 里最常见的是两种方式: 1.第三方工具 Newtonsoft,非常好用;2.net 自身带的#2 楼已说。但在.net 的 MVC 3 中,可以很简单地将对象转化为json. public JsonResult GetListJSON

“/”应用程序中的服务器错误。

网上评价都很高,价格方面也很合适,整体来说都非常不错的;但是买东西,关键还是要看产品的特点是否符合您的需求,建议认真衡量以后,购买适合自己的才是最重要的,贵的不一定就代表是好的、

未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.IO.FileLoadException: 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

程序集加载跟踪: 下列信息有助于确定程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”未能加载的原因。

=== 预绑定状态信息 ===

日志: DisplayName = Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed

 (Fully-specified)

日志: Appbase = file:///c:/users/administrator/documents/visual studio 2013/Projects/WebApplication1/WebApplication1/

日志: 初始 PrivatePath = c:\users\administrator\documents\visual studio 2013\Projects\WebApplication1\WebApplication1\bin

调用程序集: System.Net.Http.Formatting, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35。

===

日志: 此绑定从 default 加载上下文开始。

日志: 正在使用应用程序配置文件: c:\users\administrator\documents\visual studio 2013\Projects\WebApplication1\WebApplication1\web.config

日志: 使用主机配置文件: C:\Users\Administrator\Documents\IISExpress\config\aspnet.config

日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。

日志: 策略后引用: Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed

日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/ad986885/8d89950f/Newtonsoft.Json.DLL。

日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/ad986885/8d89950f/Newtonsoft.Json/Newtonsoft.Json.DLL。

日志: 尝试下载新的 URL file:///c:/users/administrator/documents/visual studio 2013/Projects/WebApplication1/WebApplication1/bin/Newtonsoft.Json.DLL。

警告: 比较程序集名称时发生不匹配: 主版本

错误: 未能完成程序集的安装(hr = 0x80131040)。探测终止。

堆栈跟踪: 

[FileLoadException: 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]

   System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() +0

   System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() +84

   System.Net.Http.Formatting.MediaTypeFormatterCollection..ctor() +42

   System.Web.Http.HttpConfiguration.DefaultFormatters() +54

   System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes) +90

   System.Web.Http.GlobalConfiguration.<CreateConfiguration>b__0() +95

   System.Lazy`1.CreateValue() +415

   System.Lazy`1.LazyInitValue() +152

   System.Lazy`1.get_Value() +75

   System.Web.Http.GlobalConfiguration.get_Configuration() +35

   WebApplication1.Areas.HelpPage.HelpPageAreaRegistration.RegisterArea(AreaRegistrationContext context) in c:\Users\Administrator\Documents\Visual Studio 2013\Projects\WebApplication1\WebApplication1\Areas\HelpPage\HelpPageAreaRegistration.cs:23

   System.Web.Mvc.AreaRegistration.CreateContextAndRegister(RouteCollection routes, Object state) +198

   System.Web.Mvc.AreaRegistration.RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Object state) +238

   System.Web.Mvc.AreaRegistration.RegisterAllAreas(Object state) +75

   System.Web.Mvc.AreaRegistration.RegisterAllAreas() +24

   WebApplication1.WebApiApplication.Application_Start() in c:\Users\Administrator\Documents\Visual Studio 2013\Projects\WebApplication1\WebApplication1\Global.asax.cs:16

[HttpException (0x80004005): 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]

   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9936761

   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118

   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172

   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336

   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]

   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9915300 c_a_3();

   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101

   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

网上搜了一大推,没有一个起作用的!

------解决方案--------------------

见鬼,你升级6.04怎么会需要

Newtonsoft.Json, Version=4.5.0.0

也许是nuget包有问题,你自己重新引用下看看

------解决方案--------------------

很容易的嘛。

跟我以前公司的程序员一样,遇到错误别立刻吓一跳,然后慌慌张张的上蹿下跳。

因为引用出了问题,在你的程序集里面找不到的Newtonsoft.Json,所以它就拿从系统盘里面预装的旧版的来用。

结果就报版本错误了。

web.config 里面注明了  <dependentAssembly>

        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />

        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

      </dependentAssembly>

就要求用6.*版本的了。

你可以删除bin文件夹里面的Newtonsoft.Json,重新用nuget 引用一遍。

我就只说到这里了,具体常见错误有三种情况,我上一家公司的程序员花了1年也没学会处理这个问题。

第一,引用不存在vs自动找到旧版的。

第二,web.config配置的版本号跟实际想要版本号不对。

第三,bin文件夹里面的根本就是旧版的。

/*dataStr:请求参数,如"type=order&date=20130620url:请求执行的页面(用于执行sql语句,并输出查询内容(json格式字符)),如"order_handler.ashx"(.net的一种文件)如[{"telno":"18682237640内容来自www.zgxue.com请勿采集。

免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
Copyright © 2017 www.zgxue.com All Rights Reserved