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

时间:2012-11-29 16:25:39

标签: 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()
  });

抛出此错误:

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

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

2 个答案:

答案 0 :(得分: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中而派生类型不是?是不是错误说问题是另一种方式?)。

答案 1 :(得分:1)

尝试更新您的nuget包。我更新了我的,它解决了这个问题。我在azure服务本身也遇到了这个问题。