从ASP .Net Core 1.0.0-rc2-final交换到1.0.0会导致发布的网站失败

时间:2016-07-05 16:14:56

标签: asp.net-core-1.0

我刚刚将我的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.configproject.json以及Startup.cs下方@ Pawel的建议可以在this Gist中找到。)

1 个答案:

答案 0 :(得分:6)

问题是您的工具部分为空。 NuGet UI中存在一个错误,当您尝试更新工具包时,它会将它们移动到dependencies,工具将停止工作(https://github.com/aspnet/IISIntegration/issues/215#issuecomment-229433836)。在您的情况下,因为Microsoft.AspNetCore.IISIntegration.Tools部分中没有tools,postpublish脚本无法正常工作 - 它不会更新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后缀的包)与上面代码段中的位置相同。