tutorial microsoft management app c# azure asp.net-core azure-web-sites

c# - microsoft - panel azure login



Problemas con la implementaciĆ³n de la aplicaciĆ³n ASP.NET 5(ASP.NET Core) en Azure (3)

Tengo una aplicación en ASP.NET 5 (CoreCLR) e intento publicarla en Microsoft Azure. Web App gratuita (no VDS)

Estoy publicando aplicaciones usando Visual Studio 2015 Publish->Microsoft Azure y siguiendo estas instrucciones .

Pero cuando lo publico y trato de abrirlo, veo que no se detiene la carga de la página vacía. Habilitaba el registro y veía el registro (stdout.log) desde Azure y solo había:

''"dnx.exe"'' is not recognized as an internal or external command,

programa operable o archivo por lotes.

También traté de Continiusly publishing con git. Durante la inserción, comenzó a restaurar paquetes y falló con error, no disk space available .

¿Hay alguna forma de publicar la aplicación ASP.NET 5 en Azure Web App?


En primer lugar, sí, puede ejecutar felizmente ASP.Net 5 aplicaciones principales en Azure, pero hay algunos problemas.

No sé por qué no funciona cuando publicas desde Visual Studio en sí (¿por qué está publicando una respuesta que te escucho preguntar ...), pero aquí hay algunas cosas que echar un vistazo;

  • Intenta ejecutar IIS localmente (en lugar de cernícalo), solo para ver si hay un problema. Por ejemplo, necesita un Web.config con algunas configuraciones o necesita la aplicación.UseIISPlatformHandler en startup.cs.
  • Eche un vistazo a su archivo global.json . No debería importar cuando publique desde Visual Studio, pero no hará daño configurarlo correctamente. Puedes hacer algo como esto:

.

{ "sdk": { "version": "1.0.0-rc1-update1", "runtime": "coreclr", "architecture": "x64" } }

En cuanto a la publicación continua , ese es un problema conocido con sitios gratuitos y compartidos y uno que me costó unas horas. Básicamente, cuando se está implementando mediante este mecanismo y especifica corecelr, todo el tiempo de ejecución se vuelve a instalar desde Nuget y eso ocupa casi 1 GB (la asignación para sitios gratuitos y compartidos). Agregue algunos paquetes de NPM y está por encima del límite y, listo, no puede implementar. @shanselman lo discutió recientemente en uno de sus podcasts. No son los binarios en tiempo de ejecución los que ocupan todo el espacio, pero como estamos en modo de compilación, todos los archivos XML de documentación también están instalados, porque Nuget no sabe que usted no está en un entorno de desarrollo, y son enormes. En este momento, la respuesta más simple si desea utilizar la publicación continua en un sitio libre o compartido es incluir el tiempo de ejecución completo en su project.json y configurar su global.json para usar el CLR completo en lugar del coreclr. Solo muy frustrante.


Estaba teniendo el mismo problema. Esta respuesta resolvió el problema.

Al crear un nuevo proyecto con la plantilla central asp.net, el archivo global.json era parte de mi proyecto API, pero también se hizo referencia en la carpeta Elementos de la solución. Cuando se publicó en una aplicación Azure API, se implementaron dos archivos global.json :

  1. En /approot/global.json
  2. En /approot/src/MyAPI/global.json

global.json archivo global.json fuera de la carpeta del proyecto a la raíz de la solución y volví a agregar una referencia a la carpeta Elementos de la solución.

Cuando se implementó, solo se implementó el archivo /approot/global.json se resolvió el problema.


Respuesta corta

Pero cuando lo publico y trato de abrirlo, veo que no se detiene la carga de la página vacía.

Esto sucede cuando nuestra aplicación no puede publicar el tiempo de ejecución ( dnx.exe ) con la aplicación.

Discusión

Hay varias formas de publicar aplicaciones ASP.NET Core rc1 en una aplicación web Azure. Estos incluyen implementación continua con Git y publicación con Visual Studio. Publique los contenidos de su repositorio para ayuda específica.

El ejemplo es una aplicación ASP.NET Core rc1, implementada en una aplicación web de Azure, a través de la implementación continua de GitHub. Estos son los archivos vitales.

app/ wwwroot/ web.config project.json startup.cs .deployment <-- optional: if your app is not in the repo root global.json <-- optional: if you need dnxcore50 support

app / wwwroot / web.config

Agregue HttpPlatformHandler . Configúrelo para reenviar todas las solicitudes a un proceso DNX. En otras palabras, indique a la aplicación Azure Web que use DNX.

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/> </handlers> <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/> </system.webServer> </configuration>

app / project.json

Incluya una dependencia en el servidor Kestrel. Establezca un comando web que iniciará Kestrel. Use dnx451 como marco de destino. Vea a continuación el trabajo adicional para apuntar a dnxCore50 .

{ "dependencies": { "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final" }, "commands": { "web": "Microsoft.AspNet.Server.Kestrel" }, "frameworks": { "dnx451": { } } }

aplicación / Startup.cs

Incluye el método Configure . Este agrega un controlador de respuesta extremadamente simple.

using Microsoft.AspNet.Builder; using Microsoft.AspNet.Http; namespace WebNotWar { public class Startup { public void Configure(IApplicationBuilder app) { app.Run(async (context) => { await context.Response.WriteAsync( "Hello from a minimal ASP.NET Core rc1 Web App."); }); } } }

.despliegue (opcional)

Si su aplicación no está en el directorio raíz de los repositorios, cuéntele a Azure Web App qué directorio contiene la aplicación.

[config] project = app/

global.json (opcional)

Si desea apuntar a .NET Core, dígale a Azure que queremos orientarlo. Después de agregar este archivo, podemos reemplazar (o complementar) la entrada dnx451 en nuestro project.json con dnxCore50 .

{ "sdk": { "version": "1.0.0-rc1-update1", "runtime": "coreclr", "architecture": "x64" } }