首页 新闻 会员 周边

json引用问题

0
悬赏园豆:80 [已解决问题] 解决于 2017-06-20 15:54

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


 

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

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

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

源错误: 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。


程序集加载跟踪: 下列信息有助于确定程序集“Newtonsoft.Json”无法加载的原因。

=== 预绑定状态信息 ===
日志: 用户 = DESKTOP-66BK0FE\adzsm
日志: DisplayName = Newtonsoft.Json
 (Partial)
日志: Appbase = file:///F:/工作项目/CMS_2.0/CMS_2.0/
日志: 初始 PrivatePath = F:\工作项目\CMS_2.0\CMS_2.0\bin
调用程序集: (Unknown)。
===
日志: 此绑定从 default 加载上下文开始。
日志: 正在使用应用程序配置文件: F:\工作项目\CMS_2.0\CMS_2.0\web.config
日志: 使用主机配置文件: C:\Users\adzsm\Documents\IISExpress\config\aspnet.config
日志: 使用 C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config 的计算机配置文件。
日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。
日志: 试图下载新的 URL file:///C:/Users/adzsm/AppData/Local/Temp/Temporary ASP.NET Files/root/7bdc4153/9ec7540c/Newtonsoft.Json.DLL。
日志: 试图下载新的 URL file:///C:/Users/adzsm/AppData/Local/Temp/Temporary ASP.NET Files/root/7bdc4153/9ec7540c/Newtonsoft.Json/Newtonsoft.Json.DLL。
日志: 试图下载新的 URL file:///F:/工作项目/CMS_2.0/CMS_2.0/bin/Newtonsoft.Json.DLL。
警告: 比较程序集名称时发生不匹配: NAME
错误: 未能完成程序集的安装(hr = 0x80131040)。探测终止。


堆栈跟踪: 

[FileLoadException: 未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]
   System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
   System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +43
   System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +127
   System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +142
   System.Reflection.Assembly.Load(String assemblyString) +28
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException: 未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +613
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +203
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +105
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +178
   System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir) +163
   System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors) +53
   System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors) +175
   System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +86
   System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +261
   System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +101
   System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +126
   System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +62
   System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +33
   System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) +37
   System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +307
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
问题补充:

webform   2.0的框架

段情的主页 段情 | 初学一级 | 园豆:167
提问于:2017-06-20 10:14
< >
分享
最佳答案
0

找到的程序集清单定义与程序集引用不匹配

意思就是有json.net的dll但和配置里的版本不一样

一般在webconfig里能找到配置.你先到bin里看现有的版本是多少.

再到配置版本的地方改成一样的

收获园豆:50
吴瑞祥 | 高人七级 |园豆:29449 | 2017-06-20 10:17

bin里4.0版本和2.0版本  都有

段情 | 园豆:167 (初学一级) | 2017-06-20 10:22

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime> 
在config是这么写吗

段情 | 园豆:167 (初学一级) | 2017-06-20 10:23

@段情: config里配置应该是这样没错.

但bin里怎么会都有..2个dll文件名还不一样?

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-20 10:28

@吴瑞祥: 

段情 | 园豆:167 (初学一级) | 2017-06-20 10:31

@段情: 不是这个...是bin文件夹里...而且这里也只有1个啊.,不可能有2个的.,

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-20 10:31

@吴瑞祥: 

段情 | 园豆:167 (初学一级) | 2017-06-20 10:31

@段情: 点右键可以看到dll的版本.,

你是不是有多个项目.然后不一样的项目引用的json.net的版本不一样?

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-20 10:32

@吴瑞祥: 不是的 就这一个项目  

段情 | 园豆:167 (初学一级) | 2017-06-20 10:34

@吴瑞祥: 我看其他的dll文件都是2.0以下的  这个是4.0的   是不是版本问题

段情 | 园豆:167 (初学一级) | 2017-06-20 10:34

@段情: 楼下说的也可以.你在nuget里卸载json.net.重新安装一下

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-20 10:38

@吴瑞祥: 

段情 | 园豆:167 (初学一级) | 2017-06-20 11:01

@段情: 你用的什么版本vs.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-20 11:02

@吴瑞祥: 2012的

段情 | 园豆:167 (初学一级) | 2017-06-20 11:07

@段情: 2012不是有工具了的.

安装的时候选择版本就好.你看下你的2.0最高是什么版本

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-20 11:14

@吴瑞祥: 能帮忙远程一下吗

段情 | 园豆:167 (初学一级) | 2017-06-20 11:15

@吴瑞祥: TV

段情 | 园豆:167 (初学一级) | 2017-06-20 11:15
其他回答(2)
0

删除掉这个引用,然后采用Nuget安装。Nuget会帮你处理版本不一致的问题。当然,你可以自己在web.config中兼容处理。

收获园豆:20
幻天芒 | 园豆:37175 (高人七级) | 2017-06-20 10:34

把之前的nuget卸载 重新安装吗

支持(0) 反对(0) 段情 | 园豆:167 (初学一级) | 2017-06-20 10:35

@段情: 是的,这是最简单的方式。必须用Nuget安装哈。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2017-06-20 10:57

@幻天芒: 我试过了

支持(0) 反对(0) 段情 | 园豆:167 (初学一级) | 2017-06-20 11:01

@段情: 应该是你的VS版本太低了

支持(0) 反对(0) 大志若愚 | 园豆:2138 (老鸟四级) | 2017-06-20 11:51

@段情: 在扩展管理中,升级你的Nuget。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2017-06-20 12:03
0

你这个问题啊,1、你把引用什么的都去掉,重新引用packages包。

2、把你的Newtonsoft.Json.dll文件都放在项目文件夹下面。

3、找到packages.config,可以直接在里面引用dll包。

收获园豆:10
柿子Boy | 园豆:256 (菜鸟二级) | 2017-06-20 15:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册