2016-05-24 20 views
8

Come posso pubblicare la mia applicazione ASP.NET Core in Azure?Pubblicazione dell'applicazione ASP.NET Core in Azure tramite PowerShell ottenendo 502 (gateway non valido) in Azure

Quello che ho fatto finora è stato creato uno script che ho ricevuto da documenti ufficiali di Azure/Microsoft che richiamano lo script default-publish.ps1 che utilizza anche Visual Studio. Lo script appare come segue:

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 

Ora questo script invita lo script predefinito-publish.ps1, dato si fornisce il nome del sito web Azure e il dotnet pubblicano manufatto. Ho aggiornato il mio script default-publish.ps1 con esattamente ciò che è attualmente nello repo.

Il problema è che quando pubblico in Azure viene restituito un errore di 502 Bad Gateway. Anche con un progetto creato utilizzando il nuovo aggiornamento degli strumenti, non riesco a pubblicarlo correttamente in Azure.

+0

Bad gateway molto probabilmente significa che l'applicazione non è stata avviata affatto. Come si pubblica l'applicazione prima di distribuirla in Azure? Come appare il tuo web.config dopo che hai pubblicato la tua applicazione? Penso che quello che succede sia che il tuo web.config abbia solo valori segnaposto. Subito dopo l'installazione dell'applicazione viene eseguita per eseguire lo strumento di pubblicazione dopo aver pubblicato l'applicazione per correggere la configurazione. Penso che questo passo non stia succedendo o - se passi da RC1 a RC2 - web.config non si trova nella posizione giusta poiché dovrebbe essere ora nell'approazione e non in wwwroot. – Pawel

+0

Abbiamo uno script sull'elemento della configurazione che esegue il ripristino dotnet, la creazione di dotnet e una pubblicazione dotnet in una posizione, e quindi usiamo lo script di pubblicazione vs come trovato nel repository menzionato nel post per eseguire la distribuzione azure effettiva. Questo progetto è sempre stato RC2 fin dall'inizio webconfig è letteralmente il default che si ottiene quando si avvia un nuovo progetto RC2 tramite il nuovo aggiornamento degli strumenti VS. web.config si trova nell'approazione accanto a startup.cs e program.cs. – Lutando

+0

Ho scritto un post sull'esecuzione di app ASP.NET Core con IIS che contiene l'intera sezione sulla risoluzione dei problemi 502.3 Bad Gatway: https://blog.3d-logic.com/2016/06/08/running-asp-net-core- applicazioni-con-iis-e-antares /. Potresti trovarlo utile. – Pawel

risposta

1

Avete un web.config? E 'incluso nel project.json come questo:

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

web.config sarà simile a questo:

<?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> 

Nota: le variabili d'ambiente e LAUNCHER_PATH LAUNCHER_ARGS possono essere fonte di il tuo problema Stai tentando di avviare gli script di pubblicazione eseguiti da Visual Studio, è possibile che visual studio imposti i valori nell'ambiente prima di eseguire gli script.

Per avere RC2 sito attivo e in esecuzione su un Azure VM, ho dovuto cambiare quella linea di simile a questa:

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

provare a impostare il vostro web.config con i valori espliciti. Se la tua implementazione funziona, allora sai che sono gli ENVVARS che stanno scompigliando.

+0

Lo strumento di pubblicazione-iis deve essere [cablato come script post-pubblicazione] (https://github.com/aspnet/cli-samples/blob/master/HelloMvc/project.json#L35-L37) e corregge la configurazione per di conseguenza. – Pawel

+0

Solo se si utilizza Visual Studio. – NotMyself

+0

No, puoi configurarlo da solo. publish-iis non è uno strumento VS è uno strumento generale. – Pawel