MVC4 Web API中的Global.Asax错误在Azure计算模拟器中运行 - 仅在有时

And*_*ltz 5 asp.net-mvc-4 asp.net-web-api

我昨天注意到,当我调试我的Web角色时,我的本地Windows Azure模拟器中发生了这个错误.但部署的项目仍然适用于Azure.今天,我部署的项目失败了同样的错误.请帮忙!

这个代码块在我的Global.axax.cs文件的Application_Start方法中:

GlobalConfiguration.Configuration.MessageHandlers
  .Add(new BasicAuthMessageHandler()
  {
     PrincipalProvider = new PrincipalProvider()
  });
Run Code Online (Sandbox Code Playgroud)

抛出此错误:

违反类型的继承安全规则:'System.Net.Http.Formatting.JsonContractResolver'.派生类型必须与基本类型的安全可访问性匹配,或者不太容易访问.

当我开始调试时(这是一个Azure Web角色项目).但有时候(实际上它似乎每隔一次我调试就会发生)......我需要做的就是停止并重新启动调试器.是什么导致了这个问题?

And*_*ltz 1

这与 Newtonsoft.Json 程序集有关。我从项目的引用中删除了它,清理并重建了项目(为了更好的措施),然后重新添加它并再次重建项目。错误消失了。

System.Net.Http.Formatting.JsonContractResolver 派生自 Newtonsoft.Json。另一个线程(此处: http: //forums.asp.net/t/1812274.aspx/3/10)通过从 GAC 中删除 Newtonsoft.Json 解决了同样的问题,因为它在那里并且 System.Net.Http.Formatting不是。这显然解决了一个人的问题,尽管对我来说似乎是倒退的(为什么基类型不能在 GAC 中,而派生类型则不能?错误不是说问题是相反的吗??)。

  • 这对我来说是一个反复出现的问题 - 如果我进行干净的构建,它就会消失,但一旦我尝试调试,它就会再次出现。它似乎与添加 PCL 作为我的 WebAPI 项目的依赖项有关。 (4认同)