net mvc example asp c# .net azure model-view-controller asp.net-core

c# - example - asp.net mvc



ASP.NET Core 1.1 funciona bien localmente, pero al publicar en Azure dice "Se produjo un error al iniciar la aplicaciĆ³n". (8)

He estado desarrollando una aplicación web ASP.NET Core, basada en gran medida en la plantilla MVC proporcionada en Visual Studio 2017 RC2. Se ejecuta perfectamente en el modo de depuración local, pero cuando intento publicarlo en una aplicación web alojada en Azure, aparece este error:

Se produjo un error al iniciar la aplicación.

.NET Core X86 v4.1.1.0 | Microsoft.AspNetCore.Hosting versión 1.1.0-rtm-22752 | Microsoft Windows 6.2.9200

Intenté configurar stdoutLogEnabled="true" en el archivo web.config, pero parece no tener ningún efecto, el error es el mismo.

Actualizar:

Con algo de ayuda logré recuperar el registro, y dice:

Application startup exception: System.TypeLoadException: Could not load type ''System.IO.File'' from assembly ''mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e''. at Microsoft.Extensions.DependencyModel.FileWrapper.OpenRead(String path) at Microsoft.Extensions.DependencyModel.DependencyContextLoader.LoadEntryAssemblyContext(IDependencyContextReader reader) at Microsoft.Extensions.DependencyModel.DependencyContextLoader.Load(Assembly assembly) at Microsoft.Extensions.DependencyModel.DependencyContext.Load(Assembly assembly) at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.DiscoverAssemblyParts(String entryPointAssemblyName) at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection services) at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection services) at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc(IServiceCollection services) at Bla.Api.Startup.ConfigureServices(IServiceCollection services) in C:/Users/user/Source/Workspaces/Bla/Bla.Api/src/Bla.Api/Startup.cs:line 73 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services) at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() Hosting environment: Production Content root path: D:/home/site/wwwroot Now listening on: http://localhost:1264 Application started. Press Ctrl+C to shut down.

La línea de código a la que hace referencia en la línea 73 es:

services.AddMvc();

Actualizar:

Mi archivo global.json se ve así (donde Bla.Api es el nombre del proyecto y el archivo se encuentra en la carpeta raíz de la solución).

{ "projects": [ "Bla.Api" ], "sdk": { "version": "1.1.0" } }


Dado que muchos problemas diferentes pueden causar esta página de error, recomiendo encarecidamente lo siguiente para determinar la causa raíz rápida y fácilmente, sin luchar con Azure (o cualquier servidor / plataforma para el caso) para obtener registros.

Puede habilitar mensajes de error amigables para el desarrollador extremadamente útiles al inicio estableciendo las .UseSetting("detailedErrors", "true") y .CaptureStartupErrors(true) en su archivo Program.cs.

Para ASP.NET Core 1.x

public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseSetting("detailedErrors", "true") .UseIISIntegration() .UseStartup<Startup>() .CaptureStartupErrors(true) .Build(); host.Run(); }

(2018/07) Actualización para ASP.NET Core 2.1

public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .CaptureStartupErrors(true) .UseSetting("detailedErrors", "true") .UseStartup<Startup>() .Build(); }

  • Esta configuración debe eliminarse tan pronto como se complete su solución de problemas para no exponer su aplicación a ataques maliciosos.

En mi caso, eso fue porque estaba tratando de obtener algunos datos en el inicio, y dbcontext no se actualizó en el entorno de producción.

Cambié mi ConnectionString a Production y Runned Update-Database, y el problema fue resuelto.


En mi caso, fue porque estaba tratando de publicar secretos de usuario para usar con Fabook OAuth. Sé que es una respuesta específica muy situacional, pero OAuth parece bastante común hoy en día. Los Secretos de Usuario, resulta que no están destinados a ser publicados. Quien sabe.

Entonces para probar esto cambié temporalmente el siguiente código en startup.cs. Esta información no debe estar codificada como parte de las mejores prácticas, ya que terminaría en un texto claro en el control de la fuente.

antes de

app.UseFacebookAuthentication(new FacebookOptions() { AppId = Configuration["Authentication:Facebook:AppId"], AppSecret = Configuration["Authentication:Facebook:AppSecret"] });

Después

app.UseFacebookAuthentication(new FacebookOptions() { AppId = "0000000000000", // your value AppSecret = "0000000000000000000000000000000" // your value });

Entonces funcionó.


Es probable que la pregunta esté duplicada; consulte ASP.NET Core hosting - 500 error interno del servidor .


Respuesta rápida:

stdoutLogEnabled="true" establecer: stdoutLogEnabled="true" y stdoutLogFile="./logs/stdout" . Además, necesita crear la carpeta de logs manualmente.


Gracias a todos por vuestras sugerencias. Lo único que funcionó al final fue borrar esa aplicación web de Azure en la que no podía publicar y crear una nueva. Supongo que quizás algunos de los .dlls del entorno de tiempo de ejecución anterior seguían dando vueltas o no se actualizaban ... Fuera lo que fuese, volver a crear funcionaba. Sin embargo, espero no volver a tener este error porque no puedes hacer este tipo de cosas en producción.

Hacer cambios en el archivo global.json parecía no tener ningún efecto.

Crear una API completamente nueva a partir de una plantilla tampoco ayudaba, el problema era con la aplicación web de Azure, ya que todo funcionaba perfectamente localmente.

Otro consejo muy útil fue agregar el registro (y el archivo "logs" en la raíz) según la otra respuesta. Eso al menos me apuntó en la dirección correcta. También verifica tu tiempo de ejecución con dotnet --version .

De nuevo, ¡gracias por la ayuda de todos!


He tenido el mismo problema. Simplemente no implementado en Azure, estoy usando mi máquina local como servidor y lo albergo en IIS.

An error occurred while starting the application. .NET Core X64 v4.1.1.0 | Microsoft.AspNetCore.Hosting version 1.1.1 | Microsoft Windows 10.0.14393 | Need help?

Y esto se solucionó cambiando web.config.

Primer conjunto stdoutLogEnabled = "true"

Luego asegúrese de que stdoutLogFile="./logs/stdout" /> existe esta carpeta.

Y luego reinicie IIS, puede encontrar el problema real en el archivo de registro.


Conéctese a través de un cliente sftp y elimine todo en la carpeta del sitio / wwwroot manualmente. Republicar

No he tenido más que problemas desde que migré una aplicación que he alojado en Azure a .net core desde MVC 4.

En un momento dado, hace unas semanas, no pude ejecutar un proyecto después de una publicación exitosa. Incluso intenté borrar dos veces el perfil completo del Servicio de aplicaciones y recrearlo con el mismo nombre. Sin embargo, cuando agregué un ''2'' al nombre del servicio de aplicaciones (para crear un servicio de aplicaciones nunca antes utilizado), publicar exactamente el mismo proyecto con 0 cambios funcionó perfectamente. ¿Qué hace exactamente una eliminación si puedo publicar con éxito en un nuevo servicio de aplicación pero no en uno eliminado y recreado? Eliminar los archivos existentes en el destino se verificó en cada publicación, que tampoco hizo nada.

Tuve el mismo error hoy que en el OP en mi sitio # 2. Ocurrió después de intentar actualizar varios paquetes asp nuget y volver a implementarlos. Realmente no queriendo tener que pasar a la iteración myApp3 de mi servicio de aplicación, decidí usar la información de FTP proporcionada en la página de resumen de azure. Navegué a Site / wwwroot y eliminé todo lo que había dentro del cliente FTP. Luego publiqué la aplicación, y funcionó. Solo puedo concluir que la casilla ''Eliminar'' no funciona correctamente.


ELIMINA todos los dll existentes de wwwroot / your_application_folder, luego copia todos los archivos y carpetas de salida de publicación.

El problema ocurre cuando los NUGETS se actualizan automáticamente. Si no limpia los archivos existentes en wwwroot / your_application_folder IIS proporciona el error anterior.