本地我的项目运行正常但是当我使用Web应用程序在Azure上部署时,启动时出现以下错误:
MissingMethodException:找不到方法:' Newtonsoft.Json.JsonSerializerSettings Microsoft.AspNet.Mvc.Formatters.JsonOutputFormatter.get_SerializerSettings()'。 SmartAdmin.Startup。<> c.b__13_7(MvcOptions选项)
我试过这个:
services.AddMvc(options =>
{
options.Filters.Add(new UserPreferencesLoaderAtrribute());
var jsonFormatter = (JsonOutputFormatter)options.OutputFormatters.FirstOrDefault(f => f is JsonOutputFormatter);
if (jsonFormatter != null)
{
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
});
而且:
services.AddMvc(options =>
{
options.Filters.Add(new UserPreferencesLoaderAtrribute());
}).AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
答案 0 :(得分:6)
是的,我刚刚工作了一整夜,并最终弄明白了。以下是您需要做的事情:
确保安装: -Microsoft.AspNet.Mvc.Formatters.Json version" 6.0.0-rc1-final" 和 - 将Netonsoft.Json恢复为" 6.0.6"。
然后你可以保留这个:
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
project.json:
" Microsoft.AspNet.Mvc.Formatters.Json":" 6.0.0-rc1-final", " Newtonsoft.Json":" 6.0.6"
我在重新部署方面遇到了一些麻烦,但最终还是有效。
祝你好运!答案 1 :(得分:1)
截至昨天(2016年8月2日),刚刚与微软支持部门进行了通话。由于突破性变化,Azure App Services现在仅支持ASP.NET核心:
发布了重大更改,不支持ASP.NET核心以外的任何内容,因此唯一的选择是升级。正在向所有(地区)推出重大变更,最终所有实例都将失败。
Azure应用服务是否支持ASP.NET 5,Core RC1,RC2? NO
https://blogs.msdn.microsoft.com/waws/2016/06/14/supporting-asp-net-5-core-rc1-on-azure-app-service/
验证您的应用是否运行最新版本的ASP.NET Core,而不是RC1或RC2。
我们受到影响(北欧)并将我们的应用程序从RC2升级,并且它第一次工作。
答案 2 :(得分:0)
我们也在制作中看到了这一点,与团队联系并解决了这个问题:https://social.msdn.microsoft.com/Forums/en-US/f0a6bbaf-498a-4c1f-b869-6779ee18e04e/app-service-applications-may-experience-methodnotfound-exceptions-due-to-incorrect-newtonsoft-json?forum=windowsazurewebsitespreview
App Service的修复程序似乎正在进行中。同时,链接的帖子包含与此处其他答案几乎相同的说明。