Asp.net mvc 4 Azure compute emulator中MVC4 Web API runnin中的Global.Asax错误-仅有时

Asp.net mvc 4 Azure compute emulator中MVC4 Web API runnin中的Global.Asax错误-仅有时,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,昨天我注意到,当我调试我的web角色时,这个错误发生在我的本地WindowsAzure模拟器中。但是部署的项目仍然在Azure上工作。今天,我部署的项目由于同样的错误而失败。救命啊 我的Global.axax.cs文件的应用程序启动方法中的此代码块: GlobalConfiguration.Configuration.MessageHandlers .Add(new BasicAuthMessageHandler() { PrincipalProvider = new Prin

昨天我注意到,当我调试我的web角色时,这个错误发生在我的本地WindowsAzure模拟器中。但是部署的项目仍然在Azure上工作。今天,我部署的项目由于同样的错误而失败。救命啊

我的Global.axax.cs文件的应用程序启动方法中的此代码块:

GlobalConfiguration.Configuration.MessageHandlers
  .Add(new BasicAuthMessageHandler()
  {
     PrincipalProvider = new PrincipalProvider()
  });
抛出此错误:

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


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

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


System.Net.Http.Formatting.JsonContractResolver是从Newtonsoft.Json派生的。另一个线程(此处:)通过从GAC中删除Newtonsoft.Json解决了同样的问题,因为它在GAC中,而System.Net.Http.Formatting没有。这显然解决了一个人的问题,尽管在我看来这似乎是落后的(为什么基类型不能在GAC中,而派生类型不能?错误不是说问题是相反的吗??)

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

什么是“MVC4 Web API emulator”?好问题-抱歉-我的意思是在调试器中本地运行。我有一个Azure web角色,调试器运行Azure compute emulator。我自己也遇到了这个问题。只有当ASP.NET项目引用了一个可移植类库,然后该类库引用了Json.NET时,才会发生这种情况。我花了一整天的时间胡闹,但没有成功,我最终修复了它,使这个库不是一个可移植类库,这样我就可以得到一个不同版本的Json.Net。我从来没有找到问题的根源。这对我来说是一个反复出现的问题——如果我做了一个干净的构建,它会消失,但一旦我尝试调试,它就会再次出现。这似乎与添加PCL作为WebAPI项目的依赖项有关。