asp.net - Azure Web应用程序-无法加载文件或程序集Newtonsoft.Json

标签 asp.net asp.net-mvc azure azure-web-app-service

我们有一个 .NET 4.5 Web 应用程序,可以在本地计算机(我们的本地开发服务器)和 Azure VM(2008 r2 和 2012)上运行,没有错误。

但是,将相同的应用程序上传到 Azure Web 应用程序时,我们会收到以下异常:

Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified. ->    at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor()
   at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters()
   at System.Web.Http.HttpConfiguration.DefaultFormatters()
   at System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes)
   at System.Web.Http.GlobalConfiguration.<.cctor>b__0()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at System.Lazy`1.get_Value()
   at System.Web.Http.GlobalConfiguration.get_Configuration()
   at MyHandler.Initialise()

在 MyHandler.Initialise() 内部,我们调用 GlobalConfiguration.Configuration 方法(这样我们就可以添加路由)。

如果我在调用之前转储 AppDomain 程序集的内容,我可以看到列出的 newtonsoft 程序集,也具有相同的标记:

…
Newtonsoft.Json - Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
System.Net.Http.Formatting - System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.Web.Http - System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.Web.Http.WebHost - System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
…

到底发生了什么?

这几乎就像 Azure 上的框架存在一些差异,完全忽略了 NewtonSoft 程序集。

我看过有关此程序集版本不匹配的帖子,但这似乎不是同一个问题 - 我正在运行 4.5.0.0,它正在寻找相同的版本。

最佳答案

尝试升级到 Newtonsoft 的最新版本,当前版本为 7.0.1,您运行的版本落后了 3 个。

就此而言,我现在在 Azure Web Apps 的生产环境中部署了 4.5。尝试:

  1. 确保您通过 nugget 安装到项目中
  2. 仔细检查发布包是否包含 newtonsoft 所需的 .dll 和依赖项。

在我看来,这些系统上似乎有 a.DLL 的残余,但没有与您的包一起部署到 Azure。您还可以尝试部署到全新的已删除盒子。

关于asp.net - Azure Web应用程序-无法加载文件或程序集Newtonsoft.Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800573/

相关文章:

使用 AD B2C 进行守护程序应用程序的 Azure 函数身份验证

c# - 服务结构提醒

c# - 允许多个 IP 地址连接到 Windows Azure SQL Server

c# - 如何从库类中获取调用页面名称

asp.net - 使用 ASP.NET AJAX 控制工具包设置焦点

c# - asp.net mvc 应用程序中的工作单元模式

c# - 在 ASP.NET MVC 中编辑订单详细信息

c# - 在 context.Request 中解码查询字符串

asp.net - 无法更新自动刷新引用 'ajaxcontroltoolkit.dll 和 commonlogging.dll

asp.net-mvc - 如何使用 Controller 和操作在 asp.net mvc 2 中呈现部分 View ?