簡體   English   中英

無法將ASP.NET Core應用程序部署到IIS-錯誤的網關

[英]Unable to deploy ASP.NET Core app to IIS - Bad Gateway

一直在努力使其工作,我有一個標准的.NET Core API,我想在遠程IIS服務器上托管,問題是大多數教程都是針對ASP.NET 5 / vNext的,並且不解釋會發生什么情況一旦您運行dotnet publish 我的裝訂是正確的,但是我不確定是否指向正確的文件夾。

在我的輸出文件夾中,我有publishwwwroot以及config.json和其他一些json文件。 當我將IIS指向wwwroot文件夾時,我得到:

502-Web服務器在充當網關或代理服務器時收到無效響應。

如果我嘗試將其指向任何其他文件夾,則會得到404。 我已經安裝了HttpPlatformHandler 1.2。 我的project.json如下:

  {
  "compilationOptions": {
    "debugType": "portable",
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "publishOptions": {
    "include": [
      "wwwroot"
    ]
  },

  "dependencies": {
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0-*",
    "Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0-*",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-*",
    "Microsoft.AspNetCore.Hosting": "1.0.0-*",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-*",
    "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-*",
    "Microsoft.AspNetCore.Mvc": "1.0.0-*",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-*",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-*",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-*",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-*",
    "Microsoft.Extensions.Logging.Console": "1.0.0-*",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-*",
    "OpenIddict.Core": "1.0.0-*",
    "OpenIddict.EF": "1.0.0-*",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002700"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "portable-net45+wp80+win8+wpa81+dnxcore50",
        "portable-net451+win8"
      ]
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-*",
      "imports": "portable-net45+wp80+win8+wpa81+dnxcore50"
    }
  },

  "scripts": {
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
  },

  "content": [
    "wwwroot",
    "config.json",
    "web.config"
  ],

  "exclude": [
    "wwwroot",
    "node_modules"
  ],

  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

我將這個示例的元素用於我的project.json

我將IIS指向應用程序文件夾的根文件夾,而不是wwwroot,它起作用了。

IIS服務器需要具有DotNetCore.1.0.0.RC2-WindowsHosting.exe

您在IIS中的物理路徑應指向發布輸出中的wwwroot文件夾。

在此處輸入圖片說明

還需要將approot文件夾放置在與wwwroot文件夾相同的目錄中。

我發現嘗試在approot文件夾中運行web.cmd並查看它是否會啟動很有幫助。 運行web.cmd時,更容易看到啟動異常(如果有)。 您還可以將wwwroot / web.config文件中的stdoutLogEnabled標志更改為true,以從IIS獲取任何啟動異常。

最終,至少有一次,我將頭撞在牆上一個小時試圖使其正常工作后,我重新啟動了IIS服務器,突然它正常工作。 如果是產品服務器,顯然是不得已的選擇

當我在IIS上部署站點時,在Windows 2012 R2服務器上遇到相同的問題; 網關問題。 是的,我正在使用.Net Core 2.0。 在IIS上,我有應用程序池“無托管代碼”。 托管管道“集成”,仍然存在相同的問題。 解決方法是在服務器上安裝DotNetCore.2.0.0-WindowsHosting.exe並成功:)

對我有用的方法:發布時將“部署模式”設置為“包含”。 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM