我刚刚将我的ASP项目从ASP .Net Core 1.0.0-rc2-final升级到1.0.0。 Nuget Package Manager没有处理两个问题。
首先
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
更新为
"Microsoft.NETCore.App": "1.0.0",
无法编译,因此我将其更改为
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
其次我需要改变
services.AddMvc();
到
services
.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
在我的Startup.cs
文件中。唯一的其他变化是Nuget对我的project.json
文件所做的更改。
项目在本地运行没有问题,并成功从VS2015发布到Azure。但是,当我在Azure上打开浏览器访问我的网站时,我收到错误消息
指定的CGI应用程序遇到错误,服务器终止了该过程。
为什么呢?如何诊断并修复此错误?
(N.B。在我的web.config
,project.json
以及Startup.cs
下方@ Pawel的建议可以在this Gist中找到。)
答案 0 :(得分:6)
问题是您的工具部分为空。 NuGet UI中存在一个错误,当您尝试更新工具包时,它会将它们移动到dependencies
,工具将停止工作(https://github.com/aspnet/IISIntegration/issues/215#issuecomment-229433836)。在您的情况下,因为Microsoft.AspNetCore.IISIntegration.Tools
部分中没有tools
,postpublish脚本无法正常工作 - 它不会更新web.config。 (实际应该在发布应用时看到一些消息)。您需要修复project.json
以将工具放在正确的位置(请注意,有些工具实际上需要两个工具 - tools
和dependencies
)。这是在VS中创建新的Web应用程序时创建的project.json文件:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
},
"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
确保project.json中的工具(带有.Tools
后缀的包)与上面代码段中的位置相同。