Estaba experimentando con una nueva característica que viene con .net core sdk 2.2 que supuestamente está destinada a mejorar el rendimiento en aproximadamente un 400%.
Impresionante, así que lo probé en mi proyecto ABP ( ASP.NET Boilerplate )
Template asp.net core mvc 4.0.2.0
Agregué lo siguiente a mi web.mv.cproj
archivo
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
Desafortunadamente, no creo que esta versión del marco ABP sea compatible ya que el proyecto simplemente no se ejecuta y arroja: (eventualmente)
Error HTTP 500.30 - Fallo de inicio en proceso de ANCM
Revisé los registros después de configurar stdoutLogEnabled="true"
en web.config y volver a intentarlo, pero no hay entradas.
¿Alguien ha tenido éxito al ejecutar el ABP actual contra un núcleo asp.net en la configuración del proceso?
Creo que esto puede ser algo que solo esté disponible en ABP vNext.
Respuestas:
En ASP.NET Core 2.2, se lanzó un nuevo patrón de servidor / alojamiento con IIS llamado alojamiento IIS InProcess . Para habilitar el alojamiento en proceso, se agrega el elemento csproj AspNetCoreHostingModel para establecer el modelo de alojamiento en proceso en el archivo web.config. Además, web.config apunta a un nuevo módulo llamado AspNetCoreModuleV2 que es necesario para el alojamiento en proceso.
Si la máquina de destino en la que está implementando no tiene ANCMV2, no puede usar el alojamiento IIS InProcess. Si es así, el comportamiento correcto es instalar el paquete de alojamiento dotnet en la máquina de destino o degradarlo a AspNetCoreModule.
Fuente: jkotalik (Github)
Intente cambiar la sección en csproj (editar con un editor de texto)
a lo siguiente ...
Fuente (Github)
fuente
InProcess
y parece funcionar bien. ¡Gracias!AspNetCoreModule
saltos de depuración de salida en VS2017. https://github.com/aspnet/AspNetCore/issues/6609Desde ASP.NET Core 3.0+ y Visual Studio 19 versión 16.3+ Encontrará la sección en el archivo .csproj del proyecto como se muestra a continuación:
No hay ninguna propiedad AspNetCoreHostingModel allí. Encontrará la selección del modelo de Hosting en las propiedades del proyecto. Haga clic con el botón derecho en el nombre del proyecto en el explorador de soluciones. Haga clic en propiedades.
Haz clic en el menú Depurar.
Desplácese hacia abajo para encontrar la opción Modelo de alojamiento.
Seleccione Fuera de proceso.
Guarde el proyecto y ejecute IIS Express.
ACTUALIZACIÓN para la implementación del servidor:
Cuando publica su aplicación en el servidor, hay un archivo de configuración web como el siguiente:
cambie el valor de 'hostingModel' de 'en proceso' a 'fuera de proceso' como se muestra a continuación:
fuente
En mi caso, había cambiado recientemente una cadena de conexión de base de datos en mi archivo appstettings.json. Sin registro ni captura de errores en el lugar, sospecho que este error terminó causando el error "HTTP Error 500.30 - Fallo de inicio en proceso de ANCM".
Me di cuenta del intercambio entre x-freestyler y Tahir Khalid donde Tahir sugirió un problema de IOC en el inicio. Dado que mi inicio no había cambiado recientemente, pero mi appstettings.json sí, determiné que la cadena de conexión en mi appstettings.json era la causa del problema. Corregí una cadena de conexión incorrecta y el problema se resolvió. Gracias a toda la comunidad.
fuente
Event Logs
que indicaba una configuración JSON mal formada.Si está utilizando Visual Studio y tiene instancias en ejecución, ciérrelas todas.
Debería encontrar una
.vs
subcarpeta donde reside su solución (.sln
archivo) de Visual Studio .Elimine la
.vs
carpeta y vuelva a intentarlo con el modelo de alojamiento en proceso.fuente
ASP.NET Core 2.2 o posterior: para una implementación autónoma de 64 bits (x64) que usa el modelo de hospedaje en proceso, deshabilite el grupo de aplicaciones para procesos de 32 bits (x86).
En la barra lateral Acciones del Administrador de IIS> Grupos de aplicaciones, seleccione Establecer valores predeterminados del grupo de aplicaciones o Configuración avanzada. Busque Activar aplicaciones de 32 bits y establezca el valor en Falso.
Fuente: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0#create-the-iis-site
fuente
Recibí el mismo error en mi máquina de desarrollo con Windows 10. El error no desapareció después de que instalé el paquete de alojamiento central dotnet. Tuve que ir al Visor de eventos para obtener el error detallado. Su problema subyacente (si lo hay) puede ser diferente al mío. El punto es que, si está en una máquina con Windows, el Visor de eventos está ahí para proporcionar detalles. Espero que esto ayude a alguien.
fuente
En tal caso, fue solo un error tipográfico que corrompe e impide el análisis del archivo de configuración JSON
fuente
Miré los registros de Windows en Aplicación. Mostraba el mensaje de error y el seguimiento de la pila. Descubrí que me faltaba una carpeta llamada node_modules. Creé esa carpeta y eso la solucionó.
No realicé ningún cambio en web.config ni en el archivo del proyecto. Mi versión de .NETCoreApp era 3.1
fuente
Eliminar la línea AspNetCoreHostingModel en el archivo .cproj funcionó para mí. No había tal línea en otro proyecto mío que estaba funcionando bien.
fuente
Tuve un problema similar al intentar cambiar del alojamiento OutOfProcess al alojamiento InProcess en un proyecto .Net Core que había actualizado recientemente de 2.0 a 3.0.
Sin ningún error útil real y después de pasar días tratando de resolver esto, finalmente encontré una solución para mi caso que pensé que compartiría en caso de que sea útil para alguien más que tenga problemas con esto.
Para mí, fue causado por algunos paquetes Microsoft.AspNetCore .
Después de eliminar todos los paquetes Microsoft.AspNetCore referenciados que tenían una versión inferior a 3.0.0 (no había ninguna actualización disponible> = 3.0.0 para estos), este error ya no se produjo.
Estos fueron los paquetes que eliminé;
Todos los demás paquetes de Microsoft.AspNetCore con una versión mayor o igual a 3.0.0 funcionaron bien.
fuente
Descargue el instalador del paquete de alojamiento de .NET Core mediante el siguiente enlace:
Instalador actual del paquete de alojamiento de .NET Core (descarga directa)
fuente
Esta configuración de perfil de publicación se solucionó para mí:
Configurar perfil de publicación -> Configuración -> Opciones de extensiones de sitio ->
fuente
El mío se debe a UseKestrel () en program.cs Debería ser .ConfigureKestrel () en 2.2
más información en https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs=visual-studio&WT.mc_id=-blog-scottha#update-kestrel -configuración
fuente
Encontré otro problema que comienza dando el mismo mensaje de error que en la pregunta. Estoy compartiendo esto aquí para que antes de cambiar el archivo del proyecto pueda asegurarse de que sus servicios estén registrados correctamente.
También estoy ejecutando .netcore 2.2 y recibí el mismo mensaje de error, así que cambié el archivo del proyecto de InProcess a OutOfProcess como en la respuesta seleccionada. Después de eso, encontré la causa real de mi problema cuando recibí el mensaje "No se puede crear una instancia del tipo de implementación": la causa de esto fue que tuve:
services.AddScoped<IMyService, IMyService>();
en vez de
services.AddScoped<IMyService, MyService>();
Publicación relacionada: ¿Por qué aparece el error "No se puede crear una instancia del tipo de implementación" para mi servicio genérico?
fuente
Después de pasar un día entero luchando conmigo mismo para decidir alojar mi aplicación principal asp.net en IIS con el alojamiento InProcess, finalmente estoy orgulloso y aliviado de haber resuelto este problema. Horas de pasar repetidamente por los mismos foros, blogs y preguntas SO que hicieron todo lo posible para resolver el problema, todavía estaba atascado después de seguir todos los enfoques mencionados anteriormente. Ahora aquí describiré mi experiencia al resolverlo.
Paso 1: crear un sitio web en IIS
Paso 2: Asegúrese de que AppPool para el sitio web tenga la versión .Net CLR configurada en "Sin código administrado" y la propiedad "Habilitar aplicaciones de 32 bits" en AppPool -> Configuración avanzada está configurada como falsa
Paso 3: asegúrese de que su proyecto haga referencia .Net core 2.2
Paso 4: agregue la siguiente línea en su archivo startup.cs dentro del método ConfigureServices
Paso 6: agregue los siguientes paquetes de Nuget
Paso 7: agregue la siguiente línea a su archivo .csproj
Paso 8: compile y publique su código (preferiblemente x64 bitness )
Paso 9: asegúrese de haber agregado el nombre de host de su sitio web en el archivo etc / hosts
Paso 10: reinicie el servicio de publicación World Wide Web
Ahora pruebe su aplicación principal de asp.net y debería estar alojada usando el alojamiento InProcess Para verificar si su aplicación está alojada usando el modo InProcess, verifique los encabezados de respuesta y debe contener la siguiente línea
Servidor: Microsoft-IIS / 10.0 (la versión de IIS podría depender de su sistema)
Actualización : descargue e instale el paquete de alojamiento ASP.Net Core que se requiere para que funcione
fuente
Vaya, hay muchas respuestas a esta pregunta, pero tuve el mismo problema y mi solución fue diferente a todo lo que leí aquí, y también bastante simple.
Había tenido problemas para implementar mi aplicación en azul con la configuración de entorno correcta, por lo que estaba jugando con el archivo launchsettings.json y había cambiado el valor de la variable ASPNETCORE_ENVIRONMENT en el perfil de IIS de "Desarrollo" a "Producción". . Cambiarlo de nuevo a "Desarrollo" solucionó el problema.
fuente
En mi caso, era un valor incorrecto en el archivo appsettings.json. El valor fue
.\SQLEXPRESS
y funcionó después de que lo cambié a.\\SQLEXPRESS
fuente
Para mí, se inyectó DBContext incorrectamente en HostedService. Lo reescribí de acuerdo con esto:
¿Cómo debo inyectar una instancia de DbContext en un IHostedService?
y todo funcionó bien!
fuente
Porque la aplicación falla. ¡Para quien ahorra tiempo en esta excepción!
Y el código de error dice que lanza una excepción porque no puede encontrar un archivo en la fase inicial. Consulte la sección Configuración del entorno. En mi escenario, funcionó cuando cambié el siguiente código
a
Porque tengo appsettings.development.json pero no tenía appsettings.production.json. Por qué no puede encontrar ningún archivo porque está buscando algo diferente en el lugar correcto.
fuente
Con .Net Core 2.2 debería poder utilizar el modelo de alojamiento InProcess, ya que es naturalmente más rápido: todo se procesa en IIS, sin un salto HTTP adicional entre IIS y el servidor Kestrel de su aplicación. Una cosa que quizás desee hacer es agregar esta etiqueta: AspNetCoreModuleV2 Observe la nueva opción AspNetCoreModuleV2 frente a la anterior AspNetCoreModule. Otra cosa importante que debe hacer es examinar el registro de eventos de la aplicación de Windows para identificar al culpable. Aunque los mensajes de error pueden ser crípticos, ocasionalmente apuntan a los números de línea exactos en el código que causaron la falla. Además, en caso de que use CI / CD con TFS, es posible que haya variables de entorno en el archivo appsettings.json que no se reemplazaron correctamente con sus valores designados, y esta fue una de las fuentes de excepción para mí.
fuente
Tuve un problema en mi
Program.cs
archivo. Estaba tratando de conectarme conAddAzureKeyVault
eso que se había eliminado hace mucho tiempo.Conclusión :
fuente
En mi caso, tuve una migración que fallaba cuando se ejecutaba en un entorno específico en Azure, pero funcionaba bien en dev. Como tenemos el servicio configurado para ejecutar las migraciones como parte del inicio, el inicio real de la aplicación web falla.
Ejecuté la migración manualmente en el entorno para descubrir el problema y luego lo ajusté para tratar las diferencias de datos en ese entorno.
Si alguien sabe cómo pude haber visto el error de migración sin ejecutar manualmente directamente en la base de datos, sería útil.
fuente
Simplemente tuve el mismo problema. Resultó que fue un error estúpido de mi parte.
En ServiceCollection intenté registrar un
abstract class
donde
MyClass
estabaabstract
por alguna razón desconocida para mi jeje :)Así que chicos, si tienes,
HTTP Error 500.30 - ANCM In-Process Start Failure
solo revisa tuServiceCollection
fuente
Para mí, todo estuvo bien, pero el problema se debió a la publicación de diferentes versiones de VS, ¡¡qué raro !!! (último VS 2019 (16.4.2)). Cuando publico la aplicación con VS 2017, funciona bien.
El problema real está en su archivo json de dependencia (por ejemplo
MyWebApp.deps.json
) en la carpeta de publicación. Espero que ayude a alguien.fuente
runtimes/win-x64/native
, no estoy seguro de que apunte a la misma carpeta o en alguna rutaCould not find inprocess request handler. Captured output from invoking hostfxr: Error: An assembly specified in the application dependencies manifest (Cues.Web.deps.json) was not found: package: 'runtime.win-x64.Microsoft.NETCore.App', version: '2.2.8' path: 'runtimes/win-x64/native/mscordaccore_amd64_amd64_4.6.28207.03.dll'
Por favor, vea mi respuesta anterior en este mismo hilo para comprender el conjunto. Perdón por múltiples respuestas
Después de una mayor investigación, el problema estaba sucediendo debido a que VS 2019 elige el último parche (comportamiento predeterminado de VS) de .net core 2.2, que es 2.2.8 para que publique la aplicación. Podemos restringir esto a una versión específica de nuestra elección usando
Vea aquí . Esto finalmente resolvió mi problema a pesar de que no se aplicó el último parche. Puedo construir desde cualquier VS 2017 o VS 2019, ambos publican la aplicación para .net core 2.2.0 versión en tiempo de ejecución
fuente
Tuve el mismo error y el problema fue con la versión Microsoft.Extension.Primitives del paquete no era compatible con la versión principal de .net. Y esto era una referencia de uno de los proyectos que hacía referencia a mi proyecto.
Una vez que cambié Microsoft.Extension.Primitives en ese proyecto. Este problema se solucionó.
En los registros de eventos de Azure, compruebe qué error recibe y si está relacionado con una referencia de paquete. Pruebe lo anterior que he mencionado.
Dado que los paquetes nuget están estrechamente acoplados con la versión .net. Solo debe asegurarse de que todos los paquetes que hacen referencia al proyecto también estén estrechamente acoplados con la versión .net.
fuente
Bueno, para mí tuve un inicio de aplicación complicado en el que había creado mi propio WebHostBuilder. Esto funcionó bien pero falló cuando probé el modo de alojamiento InProcess. Supongo que hubo algo que no llamé en WebHostBuilder. Así que me aseguré de llamar siempre a WebHost.CreateDefaultBuilder (args) y luego realizar cambios adicionales, básicamente como lo hacen las nuevas plantillas de aplicaciones.
O para las plantillas asp core 3.1 que usan IHostBuilder (no IWebHostBuilder), llame a ConfigureWebHostDefaults
fuente
En mi caso, ninguna de las soluciones anteriores funcionó. Pero cuando eliminé el archivo myproject.vspscc del explorador de soluciones, el problema se resolvió.
fuente
Resolvió mi problema ejecutando el grupo de aplicaciones dedicado para AspNetCoreModuleV2
Descripción:
Estaba ejecutando varias aplicaciones en el mismo grupo de aplicaciones. Algunas de las aplicaciones se estaban ejecutando
La aplicación que causaba el error estaba ejecutando AspNetCoreModuleV2
Creé un nuevo grupo de aplicaciones dedicado para AspNetCoreModuleV2 y resolvió mi problema.
fuente
Tuve un error de tiempo de ejecución en Startup.cs. Error de colegial: hice un pequeño ajuste en ese archivo, pero no ejecuté mi aplicación localmente antes de implementarla en Azure. La aplicación no se inició correctamente y obtuve la página de error 500.30.
fuente