2016-05-24 19 views
8

ASP.NETコアアプリケーションをAzureに公開するにはどうすればよいですか?ASP.NETコアアプリケーションをAzureに公開するPowerShell経由で502(Bad Gateway)をAzureに公開

私がこれまで行ってきたことは、Visual Studioでも使用されているdefault-publish.ps1スクリプトを呼び出す公式のAzure/Microsoftドキュメントから得たスクリプトを作成したことです。次のようにスクリプトが見えます:

param($websiteName, $packOutput) 

$website = Get-AzureWebsite -Name $websiteName 

# get the scm url to use with MSDeploy. By default this will be the second in the array 
$msdeployurl = $website.EnabledHostNames[1] 


$publishProperties = @{'WebPublishMethod'='MSDeploy'; 
         'MSDeployServiceUrl'=$msdeployurl; 
         'DeployIisAppPath'=$website.Name; 
         'Username'=$website.PublishingUsername; 
         'Password'=$website.PublishingPassword} 


$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1" 


. $publishScript -publishProperties $publishProperties -packOutput $packOutput 

今、このスクリプトでは、Azureのウェブサイトの名前を提供し、DOTNETがアーティファクトを公開与えられ、デフォルト・publish.ps1スクリプトに呼びかけ。私はrepoにあるものに、default-publish.ps1スクリプトを正確に更新しました。

Azureに公開すると、502 Bad Gatewayエラーが返されるという問題があります。新しいツール更新を使用して作成されたプロジェクトであっても、Azureに正しく公開することはできません。

+0

悪いゲートウェイは、アプリケーションがまったく起動していない可能性が高いことを意味します。アプリケーションをAzureにデプロイする前に、そのアプリケーションをどのように公開しますか?アプリケーションを公開した後のweb.configの外観はどうですか?私はあなたのweb.configには単にプレースホルダーの値があるということが起こると思います。あなたの設定を修正するためにアプリケーションを公開した後で、すぐに、アプリケーションは、publish-iisツールを実行するように設定されています。私はこのステップが起こっていないと思います。もしあなたがRC1からRC2に移動した場合、web.configは正しい場所にないでしょう。 – Pawel

+0

私たちは、dotnet restore、dotnet build、dotnetを実行してCIへのスクリプトを作成し、実際のAzureの展開を行うためにpostで述べたrepoにあるvs publishスクリプトを使用します。このプロジェクトは常に最初からRC2でした。webconfigは、新しいVSツーリングのアップデートで新しいRC2プロジェクトを開始したときのデフォルトのものです。 web.configはstartup.csとprogram.csのすぐそばにあります。 – Lutando

+0

トラブルシューティングに関するセクション全体が含まれているIISでASP.NETコアアプリケーションを実行するための記事を投稿しました。502.3 Bad Gatway:https://blog.3d-logic.com/2016/06/08/running-asp-net-core- iis-and-antares /があるアプリケーション。それが役に立つかもしれません。 – Pawel

答えて

1

web.configはありますか?それはこのようなあなたのproject.jsonに含まれています:

"publishOptions": { 
    "include": [ 
     "wwwroot", 
     "web.config" 
    ] 
    } 

あなたのweb.configファイルは次のようなものになります。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" 
      resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" 
       stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" 
       forwardWindowsAuthToken="false"/> 
    </system.webServer> 
</configuration> 

注:LAUNCHER_PATHとLAUNCHER_ARGSはの源である環境変数をあなたの問題。ビジュアルスタジオが実行する公開スクリプトを起動しようとしていますが、スクリプトを実行する前にビジュアルスタジオが環境内の値を設定する可能性があります。

RC2サイトのアップとAzureのVM上で実行されているを取得するために、私はこのように見えるようにその行を変更しなければならなかった:

<aspNetCore processPath="dotnet" arguments="./YourAppEntryPoint.dll" 
      stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" 
      forwardWindowsAuthToken="false"/> 

は、明示的な値を使用してweb.configファイルを設定してみてください。あなたのデプロイメントがうまくいくならば、それはそれを台無しにしている欠けているENVVARSだと分かっています。

+0

publish-iisツールは[公開後スクリプトとして配線する](https://github.com/aspnet/cli-samples/blob/master/HelloMvc/project.json#L35-L37)にする必要があります。それに応じてあなた。 – Pawel

+0

ビジュアルスタジオを使用している場合のみ。 – NotMyself

+0

いいえ、あなた自身で設定することができます。 publish-iisはVSツールではない一般的なツールです。 – Pawel

関連する問題