从 ASP .Net Core 1.0.0-rc2-final 切换到 1.0.0 会导致发布的站点失败
Swapping from ASP .Net Core 1.0.0-rc2-final to 1.0.0 causes published site to fail
我刚刚将我的 ASP 项目从 ASP .Net Core 1.0.0-rc2-final 升级到 1.0.0。 Nuget 包管理器没有处理两个问题。
首先
"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 上打开浏览器访问我的站点时,我收到错误消息
The specified CGI application encountered an error and the server terminated the process.
为什么?如何诊断和修复此错误?
(N.B。按照@Pawel 在我的 web.config
下方的建议,project.json
和 Startup.cs
在 this Gist 中可用。)
问题是您的工具部分是空的。 NuGet UI 中存在一个错误,当您尝试更新工具包时,它会将它们移至 dependencies
,并且工具将停止工作 (https://github.com/aspnet/IISIntegration/issues/215#issuecomment-229433836)。在您的情况下,因为您在 tools
部分中没有 Microsoft.AspNetCore.IISIntegration.Tools
,发布后脚本无法完成其工作 - 它不会更新 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
后缀的软件包)与上面代码段中的位置相同。
我刚刚将我的 ASP 项目从 ASP .Net Core 1.0.0-rc2-final 升级到 1.0.0。 Nuget 包管理器没有处理两个问题。
首先
"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 上打开浏览器访问我的站点时,我收到错误消息
The specified CGI application encountered an error and the server terminated the process.
为什么?如何诊断和修复此错误?
(N.B。按照@Pawel 在我的 web.config
下方的建议,project.json
和 Startup.cs
在 this Gist 中可用。)
问题是您的工具部分是空的。 NuGet UI 中存在一个错误,当您尝试更新工具包时,它会将它们移至 dependencies
,并且工具将停止工作 (https://github.com/aspnet/IISIntegration/issues/215#issuecomment-229433836)。在您的情况下,因为您在 tools
部分中没有 Microsoft.AspNetCore.IISIntegration.Tools
,发布后脚本无法完成其工作 - 它不会更新 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
后缀的软件包)与上面代码段中的位置相同。