Windows Azure 部署 - 不加载文件或程序集 'Newtonsoft.Json'
Windows Azure Deployment - not load file or assembly 'Newtonsoft.Json'
我使用 Web API 创建了 MVC 4 应用程序。它在本地环境中运行良好。当我将它部署到 Azure 时,出现以下错误。
异常信息:
异常类型:HttpException
异常消息:无法加载文件或程序集 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)在 System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication 应用程序)在 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext 上下文,MethodInfo[] 处理程序)在 System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态,MethodInfo[ ] 处理程序,IntPtr appContext,HttpContext 上下文)在 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext 上下文)在 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
无法加载文件或程序集 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)在 System.Net.Http.Formatting.BaseJsonMediaTypeFormatter..ctor() 在 System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() 在 System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() 在 System.Web.Http.HttpConfiguration.DefaultFormatters(HttpConfiguration 配置)在 System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection 路由) 在 System.Web.Http.GlobalConfiguration.b__0() 在 System.Lazy1.CreateValue() at System.Lazy
1.LazyInitValue() 在 System.Lazy1.get_Value() at System.Web.Http.GlobalConfiguration.get_Configuration() at System.Web.Http.GlobalConfiguration.Configure(Action
1 configurationCallback) 在 Activity.Web.Monitor.UI.MvcApplication.Application_Start()
知道如何解决这个问题吗?
可能在您的解决方案中还有另一个版本的 Newtonsof.json。您需要删除 neftonsoft.json 文件并将其替换为正确的版本 (6.0.0.0)
它说 "The located assembly's manifest definition does not match the assembly reference" 因为 CLR 在寻找版本 6.0 时找到了 Newtonsoft.json 的另一个版本。
发生这种情况是因为您的应用程序引用了另一个版本的 Newtonsoft.Json,并且该应用程序的其他一些依赖项使用了 Newtonsoft.json 的 6.0 版。如果您深入了解 .cspkg(使用 7zip)并从 siteroot[=19=]\bin 中提取 Newtonsoft.json,您将了解包中包含哪个版本的 Newtonsoft。
验证项目引用以查看 CopyLocal 是否设置为 true
或 Netonsoft.json。此外,在 web.config 上添加一个 assembly redirection 以确保对 Newtonsoft.json 的任何旧版本的调用都被重定向到所需的版本。
我使用 Web API 创建了 MVC 4 应用程序。它在本地环境中运行良好。当我将它部署到 Azure 时,出现以下错误。
异常信息:
异常类型:HttpException
异常消息:无法加载文件或程序集 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)在 System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication 应用程序)在 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext 上下文,MethodInfo[] 处理程序)在 System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态,MethodInfo[ ] 处理程序,IntPtr appContext,HttpContext 上下文)在 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext 上下文)在 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
无法加载文件或程序集 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)在 System.Net.Http.Formatting.BaseJsonMediaTypeFormatter..ctor() 在 System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() 在 System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() 在 System.Web.Http.HttpConfiguration.DefaultFormatters(HttpConfiguration 配置)在 System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection 路由) 在 System.Web.Http.GlobalConfiguration.b__0() 在 System.Lazy1.CreateValue() at System.Lazy
1.LazyInitValue() 在 System.Lazy1.get_Value() at System.Web.Http.GlobalConfiguration.get_Configuration() at System.Web.Http.GlobalConfiguration.Configure(Action
1 configurationCallback) 在 Activity.Web.Monitor.UI.MvcApplication.Application_Start()
知道如何解决这个问题吗?
可能在您的解决方案中还有另一个版本的 Newtonsof.json。您需要删除 neftonsoft.json 文件并将其替换为正确的版本 (6.0.0.0)
它说 "The located assembly's manifest definition does not match the assembly reference" 因为 CLR 在寻找版本 6.0 时找到了 Newtonsoft.json 的另一个版本。
发生这种情况是因为您的应用程序引用了另一个版本的 Newtonsoft.Json,并且该应用程序的其他一些依赖项使用了 Newtonsoft.json 的 6.0 版。如果您深入了解 .cspkg(使用 7zip)并从 siteroot[=19=]\bin 中提取 Newtonsoft.json,您将了解包中包含哪个版本的 Newtonsoft。
验证项目引用以查看 CopyLocal 是否设置为 true
或 Netonsoft.json。此外,在 web.config 上添加一个 assembly redirection 以确保对 Newtonsoft.json 的任何旧版本的调用都被重定向到所需的版本。