在将MVC应用程序部署到Azure后无法加载NewtonSoft.JSON

时间:2013-12-27 21:10:12

标签: asp.net asp.net-mvc azure

我已经部署了MVC 4.5网站here

但是,当我在部署后在浏览器中查看该网站时,我必须关闭自定义错误以查看以下错误:

Exception Details: System.IO.FileNotFoundException: 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.

我确保我的References文件夹中的DLL的CopyLocal设置为True。成功部署需要进行哪些其他更改?

3 个答案:

答案 0 :(得分:2)

我今天遇到同样的问题而且我不完全确定我做了什么来解决它。因此,我将尝试详细介绍我的流程。

  1. 我尝试从VS13部署一个默认应用程序,但这个消息太轰炸了。 FAIL。
  2. 然后我删除了Newtonsoft.Json程序集并手动添加了我需要的5.0.6版本。我还确保将CopyToLocal设置为true。失败。我的悲伤在增长。
  3. 我启用了NuGet Package Restore。失败。我的悲伤变成了愤怒。
  4. 我以一种愤怒的方式删除了我的Azure网站,重新创建了它,并再次重新发布。的 SUCCESS !!!
  5. 因此,我认为唯一可以给出的逻辑(ish)答案是删除您的Azure网站,重新创建它,然后重新发布。

    我希望这有助于某人。

答案 1 :(得分:2)

我通过将程序集版本从0.0.0.0-6.0.0.0重定向到6.0.0.0来修复此问题

在Web.config中添加dependencytentAssembly:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

      <!-- Add these 4 lines to Web.config, under runtime/assemblyBinding -->
      <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>
      <!-- End of copy -->

    </assemblyBinding>
  </runtime>
<configuration>

您也可以在其中找到其他dependentAssemblies,例如System.Web.Mvc,WebGrease。

最新版本的Newtonsoft.Json现在是6.0.3。您可能需要在以后增加6.0.0.0。通过查看解决方案资源管理器中的版本查找当前的最新版本。参考文献 - &gt; Newton.Json - &gt; (右键单击 - &gt;属性) - &gt;属性视图中的版本

答案 2 :(得分:0)

如果你确定CopyLocal是真的,那么唯一的另一种可能性是你有一个项目引用到不同于你的packages.config中列出的程序集版本。确保DLL版本与packages.config中的版本匹配。