未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30a

stonemqy 2016-01-25 05:18:26
网站中用到了HttpClient和Newsoft.Json,在执行HttpClient.PostAsJsonAsync方法时抛出了异常:【未能加载文件或程序集“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)

源错误:


行 150: PageSize = AspNetPager1.PageSize
行 151: };
行 152: var result = client.PostAsJsonAsync(url, filter).Result.Content.ReadAsStringAsync().Result;
行 153: var modelResult = JsonConvert.DeserializeAnonymousType(result, new
行 154: {

源文件: f:\work\usermanage\web\sellerhome\GoodsManager.aspx.cs 行: 152

程序集加载跟踪: 下列信息有助于确定程序集“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:///F:/work/usermanage/web/
日志: 初始 PrivatePath = F:\work\usermanage\web\bin
调用程序集: System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35。
===
日志: 此绑定从 default 加载上下文开始。
日志: 正在使用应用程序配置文件: F:\work\usermanage\web\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/vs/1992e148/1e3710e3/Newtonsoft.Json.DLL。
日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/1992e148/1e3710e3/Newtonsoft.Json/Newtonsoft.Json.DLL。
日志: 尝试下载新的 URL file:///F:/work/usermanage/web/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.HttpClientExtensions.PostAsJsonAsync(HttpClient client, String requestUri, T value, CancellationToken cancellationToken) +61
System.Net.Http.HttpClientExtensions.PostAsJsonAsync(HttpClient client, String requestUri, T value) +132
sellerhome_GoodsManager.loadData() in f:\work\usermanage\web\sellerhome\GoodsManager.aspx.cs:152
sellerhome_GoodsManager.Page_Load(Object sender, EventArgs e) in f:\work\usermanage\web\sellerhome\GoodsManager.aspx.cs:55
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
System.Web.UI.Control.OnLoad(EventArgs e) +92
System.Web.UI.Control.LoadRecursive() +54
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

...全文
7513 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2016-01-26
  • 打赏
  • 举报
回复
看样子缺少Newtonsoft.Json的引用,建.NET4的web项目,自然就引用进来了 若你的版本低,可以自己找到这个dll,V4.5.0.0的,然后,在“解决方案资源管理器”,右击“引用”,添加新项,浏览,找到你下载的那个dll,确定就行了。这样操作后,该dll被自动添加在项目的package里lib里面
stonemqy 2016-01-26
  • 打赏
  • 举报
回复
经过测试,很可能和引用不匹配有关系。 我重新建立了一个.net 4.0的项目,原样引用web api和Newton.Json,不论Newton.Json的版本是4.5.6还是6.0.8,访问api服务都没有问题。由此想到了查资料时遇到的一种情况:由于fineui引用的Newton.Json版本过低导致项目升级Newton.Json版本后运行时异常。感觉和这个很像。查看了项目中引用的工程,发现Newton.Json的引用版本没有问题,但是工程中却引用了大量自己的dll,这些东西没办法查看…… 转变思路,找找有没有其他可以提交post轻请求的方式,发现了一个:WebClient类,用它提交哦post请求就没有问题了,就是写法稍微复杂了些。

var url="*****";
var filter=new {所需的model内容};
var wc = new WebClient();
wc.Headers.Add("Content-Type", "application/json"); 
var postData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(filter));
var list = Encoding.UTF8.GetString(wc.UploadData(url, "POST", postData));
  • 打赏
  • 举报
回复
<runtime>
            <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>
        </assemblyBinding>
    </runtime>
是这样的吗?我的一开始改完了也不行,后来清除、重新生成了下就可以了
stonemqy 2016-01-26
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
或者你随便建立个项目,nuget中下载reactjs.net (for mvc5或更高版本),这个需要6.0以上版本的Newsoft.Json,会自动帮你在web.config中加上配置,然后你按样子copy到你实际的项目中就行了
现在的项目是在一个老项目上改的,只能用它现在的框架。
stonemqy 2016-01-26
  • 打赏
  • 举报
回复
引用 5 楼 FoxDave 的回复:
缺少引用或引用不匹配
确实是引用不匹配造成的。
stonemqy 2016-01-26
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
在web.config中配置depency,具体怎么写家里电脑上没有这段,公司的才有
这么干了也不行。
Justin-Liu 2016-01-26
  • 打赏
  • 举报
回复
缺少引用或引用不匹配
  • 打赏
  • 举报
回复
或者你随便建立个项目,nuget中下载reactjs.net (for mvc5或更高版本),这个需要6.0以上版本的Newsoft.Json,会自动帮你在web.config中加上配置,然后你按样子copy到你实际的项目中就行了
  • 打赏
  • 举报
回复
在web.config中配置depency,具体怎么写家里电脑上没有这段,公司的才有
stonemqy 2016-01-25
  • 打赏
  • 举报
回复
引用 楼主 stonemqy 的回复:
=== 预绑定状态信息 === 日志: DisplayName = Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed (Fully-specified) 日志: Appbase = file:///F:/work/usermanage/web/ 日志: 初始 PrivatePath = F:\work\usermanage\web\bin 调用程序集: System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35。 === 日志: 此绑定从 default 加载上下文开始。 日志: 正在使用应用程序配置文件: F:\work\usermanage\web\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/vs/1992e148/1e3710e3/Newtonsoft.Json.DLL。 日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/1992e148/1e3710e3/Newtonsoft.Json/Newtonsoft.Json.DLL。 日志: 尝试下载新的 URL file:///F:/work/usermanage/web/bin/Newtonsoft.Json.DLL。 警告: 比较程序集名称时发生不匹配: 主版本 错误: 未能完成程序集的安装(hr = 0x80131040)。探测终止。
从这一段信息来看,貌似是System.Net.Http.Formatting的某一项配置没有配置,导致程序默认引用了旧版本的Newsoft.Json,而该版本的Newsoft.Json又找不到,造成了这个问题,但是应该在什么地方配置呢? 程序中用的Newsoft.Json版本为6.0.8.18111。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧