2016-05-16 52 views
1

一直在努力實現這一目標,我有一個標準的.NET Core API,我想在遠程IIS服務器上託管,問題大部分是教程是針對ASP.NET 5/vNext的,並不解釋一旦您運行dotnet publish會發生什麼。 我的綁定是正確的,但我不確定我是否指向正確的文件夾。無法將ASP.NET Core應用程序部署到IIS - 錯誤的網關

在我的輸出文件夾,我有發佈的wwwroot以及config.json和其他一些JSON文件。當我點IIS的wwwroot文件夾我得到:

502 - 作爲網關或代理服務器的Web服務器收到了無效響應。

我得到404s,如果我試着將它指向任何其他文件夾。我安裝了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" 
    ] 
} 

我注意到this sample元素爲我project.json

+0

看到這個鏈接https://github.com/dotnet/cli/issues/2135 –

回答

1

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

enter image description here

的爲approot文件夾也需要被放置在相同的目錄作爲wwwroot文件夾。

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

最後,至少有一次,在將我的頭靠在牆上一個小時試圖讓它工作之後,我重新啓動了IIS服務器,並突然它正常工作。顯然是最後的手段,如果它是一個prod服務器

+0

幸好它是我們的分段服務器!我的問題是,當我發佈,沒有approot文件夾,這是一個真正令人困惑的結構,我會嘗試發佈圖片,如果這有助於 –

+0

你絕對需要一個贊成文件夾。這就是所有代碼所在的地方。我從Visual Studio發佈我的應用程序,它會輸出wwwroot文件夾和approot文件夾,所以問題可能在於您如何發佈。請發佈您的輸出目錄的照片。 –

+0

@TrevorWard,RC2項目中的approot文件夾?你的答案可能是RC1? –

7

我指出IIS到應用程序文件夾的根文件夾,而不是wwwroot,它的工作。

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

+2

而對於ASP.NET Core 1.0 RTM,鏈接是:https://go.microsoft.com/fwlink/?LinkId=817246 –

+0

@StefanIancu非常感謝你,你救了我的命:) –

0

我的臉,當我部署在IIS站點的Windows 2012 R2服務器上的同一個問題;壞的網關問題。是的,我正在使用.Net Core 2.0。在IIS上,我有應用程序池「無託管代碼」;管理流水線「集成」並仍然存在相同的問題。 解決方案已安裝DotNetCore.2.0.0-WindowsHosting.exe在服務器上,併成功:)

相關問題