从 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.jsonStartup.csthis Gist 中可用。)

问题是您的工具部分是空的。 NuGet UI 中存在一个错误,当您尝试更新工具包时,它会将它们移至 dependencies,并且工具将停止工作 (https://github.com/aspnet/IISIntegration/issues/215#issuecomment-229433836)。在您的情况下,因为您在 tools 部分中没有 Microsoft.AspNetCore.IISIntegration.Tools,发布后脚本无法完成其工作 - 它不会更新 web.config。 (您实际上应该在发布应用程序时看到一些消息)。您需要修复 project.json 以将工具放在正确的位置(请注意,某些工具实际上需要在 toolsdependencies 中都有条目)。这是在 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 后缀的软件包)与上面代码段中的位置相同。