Visual Studio 2012 Web API项目将无法运行 – 找不到Newtonsoft.Json
运行干净的解决scheme并重build后,我的MVC 4 Web API项目停止工作。 这是找不到Newtonsoft.Json。
我知道MS现在使用这个作为默认的JSON序列化程序 – 但它不在项目的引用列表中,我不能从NuGet中添加它,因为它已经安装了。
有没有人有什么想法,可能会出错?
全堆栈跟踪:
[FileNotFoundException:无法加载文件或程序集'Newtonsoft.Json,版本= 4.5.0.0,文化=中立,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一。 该系统找不到指定的文件。]
d:\ Data \ Source受控项目中的MvcWebRole1.WebApiApplication.Application_Error()\ georace \ georace \ Server \ GeoRaceServer \ MvcWebRole1 \ Global.asax.cs:70[HttpException(0x80004005):无法加载文件或程序集“Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其依赖项之一。 该系统找不到指定的文件。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext上下文,HttpApplication应用程序)+12838633
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext上下文,MethodInfo []处理程序)+175
System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo []处理程序,IntPtr appContext,HttpContext上下文)+304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext上下文)+404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+475[HttpException(0x80004005):无法加载文件或程序集“Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其依赖项之一。 该系统找不到指定的文件。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext上下文)+12851296 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文)+159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext上下文)+12679949
好的 – find了一个自己的工作,张贴的情况下,其他人得到这个MS错误ca </s>。 问题是你不能添加一个NuGet引用,因为它已经包含在软件包中。 所以…
- 打开packages.config
- 删除Newtonsoft.Json条目。
- 保存并生成
- 从NuGet重新添加Newtonsoft.Json。
- build立并运行
对于NuGet 已经安装的任何要重新安装的软件包,只需在软件包pipe理器控制台中input以下命令即可:
更新任何项目:
Update-Package Newtonsoft.Json -Reinstall
在特定项目中更新
Update-Package Newtonsoft.Json -Reinstall -Project My.App
对我来说,解决这个错误的唯一方法是将缺less的部分添加到我的web.config文件中,我从这里得到这个答案: https : //stackoverflow.com/a/20414714/940783
这是我需要补充的:
<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>
我把其他SO贡献者说的几个选项加在一起,再加上一个新的。
首先,事实certificate,Nuget 2.1有一些问题,这个问题被logging在一个错误,并在2.2.2固定。 请参阅https://nuget.codeplex.com/workitem/3050
所以,我做了以下步骤:
- 根据链接更新的Nuget版本为2.2.2
- 在我的项目中删除了所有对Json的引用,从NUget中卸载(右键单击项目并find软件包,然后卸载(即使这样也不行)
- 从计算机上物理删除包文件。 我在这里find包文件://projectdir/packages/Newtonsoft.JSON
- 从物理目录中删除packages.config文件(//projectname/packages.config)
- 一旦完成了这一切,我通过Nuget再次添加了Newtonsoft,然后做了重build,并且工作。
我有同样的问题(在VS2012)。 没有答案帮助我。 最后我解决了这个问题:
1)转到工具 – >扩展和更新这里更新(或安装)“NuGet包pipe理器”下一步到“在线”,并安装“快速添加NuGet”和“NuGet参考”
2)在你的项目中安装好后,右键点击“References”,在“Installed packages”中select“Manage Nuget Packages”findJson.NET。 点击卸载 – 你现在不能这样做,但它显示你必须先卸载什么(一些ASP Web Api客户端)。 所以卸载所有这些,并尝试再次卸载“Json.NET”。 现在转到“在线”并安装“Json.NET”,“ASP.NET WEB API客户端库”和“ASP.NET WEB API客户端OData”。
3)在Global.asax中删除行“WebApiConfig.Register(GlobalConfiguration.Configuration);”
build立解决scheme,一切都好,我希望这可以帮助别人:) gl
检查你是否对JSON.NET有一个“旧式”(pre nuget)引用,指向embedded在你的项目中的过时的本地拷贝。
我有一个旧的Reference\Lib\JSON.NET
这是在我的参考path,并获得优先。
检查JSON.NET属性页面是否指向预期的Nuget包版本。
我在现场部署的Team Server版本上遇到了这个问题。 我不得不修复我原来的解决scheme,并做一个干净的生成,以确保旧的Reference\Lib\
DLL没有被拿起。
我有相同的FileNotFoundException,事实certificate,我已经在我的项目上引用Newtonsoft.Json,但“复制本地”属性未设置为TRUE。 只需将其设置为TRUE,以便将dll复制到输出目录,如果这也是你的情况。
我testing了这里所说的一切,没有任何工作。 在我的情况下,我有这样的path文件夹。
- #项目/networking/应用/ …
#我的问题的原因。 我删除了#和工作正常。
什么导致我的问题与Newtonsoft.json略有不同。 我开发了一个针对.Net 4.5的Windows应用程序。 后来我发现客户的环境只支持.NET 4.0。 我已经将解决scheme复制到一个新的区域来保存.Net 4.5工作,并将解决scheme属性更改为Microsoft.Net 4.0。 我得到的Newtonsoft.json无法find的错误,我错过了一个参考。
我遵循上述程序删除packages.config; 删除Newtonsoft.json; 确保从\ packages目录中删除Newtonsoft.json; 然后从NuGet重新安装Newtonsoft.json。 我能够用.Net 4.0编译和运行应用程序
在此之前,packages.config文件显示Newtonsoft.json所针对的.Net 4.5版本。 删除和添加Newtonsoft.json现在的目标为.Net 4.0。
我错误地做了这件事,并且把它自我排除了。
开始一个新的VS 2012项目后,我使用NuGet安装Newtonsoft.JSON,正如前面提到的版本4.5.6已经安装了,看到这个已经被卸载并安装了4.5.10,我印象深刻。
甜。
在我的情况下,我检查了一个同事的项目,以某种方式把我的Newtonsoft.Json引用坏了 – 所以我不得不删除它。 右键单击项目 – >pipe理NuGet包。 在左侧点击“Installed Packages”,然后selectJson.NET并将其卸载。 在我的情况下,我不得不卸载其他依赖包也(微软ASP.Net Web API等)。 select左边的“Online”,searchJson.Net,重新安装。
您可以尝试使用-IgnoreDependencies标志安装SocialAuth.Net软件包,然后手动安装依赖项,并确保只安装最新版本的Json.Net库。
然后在运行时,SocialAuth.Net包将尊重程序集redirect并加载Json.Net(v4.5)而不是旧版本。
我在VS2012 express中遇到了同样的问题,我设法从中安装
工具 – > NuGet包pipe理器 – >pipe理解决scheme的NuGet包
在那里我find并安装了Newtonsoft Json。 到目前为止,还没有安装到解决scheme的任何项目中。
- ASP.NET MVC WebAPI 404错误
- Async WebApi Thread.CurrentCulture
- 无法在MVC4 Web API中加载文件或程序集“System.Net.Http,Version = 2.0.0.0”
- 如何在Web API 2中存储服务器端的持票人代币?
- 在ASP.NET Web API 2中禁用* all *exception处理(为我自己腾出空间)?
- ASP.NET Core中基于令牌的身份validation(刷新)
- 如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目?
- ASP.NET Core 1.0 Web API中的简单JWT身份validation
- WCF数据服务(OData)与ASP.NET Web API