Tuve el código de configuración OwinStartup funcionando perfectamente y luego dejó de funcionar. Desafortunadamente, no estoy seguro de qué hice exactamente para que deje de funcionar y me está costando mucho descubrirlo.
Para asegurarme de que tengo lo básico cubierto, hice una doble verificación para asegurarme de que tengo
[assembly:OwinStartup(typeof(WebApplication.Startup))]
atributo asignado correctamente y me aseguré de que no tengo una aplicación Configuración para owin: AutomaticAppStartup que se establece en falso, por lo que hice que un conjunto sea verdadero para estar seguro ya que no había nada allí antes.
<add key="owin:AutomaticAppStartup" value="true" />
También intenté llamar específicamente a la aplicación
<add key="owin:appStartup" value="WebApplication.Startup" />
Antes de que dejara de funcionar, actualicé los paquetes Microsoft.Owin.Security NuGet a 2.0.2, así que intenté revertirlos a 2.0.1 (eso fue un dolor) pero no cambió nada. Tengo WebActivator instalado en el proyecto y lo estoy usando para arrancar otras cosas, pero lo he probado en una nueva plantilla de WebApplication y funciona allí, así que no creo que sea el culpable.
También intenté eliminar mi clase de inicio y usar Visual Studio para agregar una nueva usando el tipo de clase de inicio OWIN en Agregar nuevo elemento y eso tampoco se llama. Luego intenté agregar una segunda clase de Inicio, ya que sé que arrojará una excepción si hay más de un atributo OwinStartup definido, pero no arroja ninguna excepción allí.
No estoy seguro de qué más probar. ¿Alguna idea?
Actualizar
Resulta que Resharper eliminó la referencia a Microsoft.Owin.Host.SystemWeb cuando lo usé para eliminar referencias no utilizadas.
fuente
Respuestas:
Asegúrese de haber instalado el
Microsoft.Owin.Host.SystemWeb
paquete en el proyecto. Este paquete es necesario para la detección de inicio en aplicaciones alojadas en IIS. Para obtener más información, puede consultar este artículo .fuente
Startup.Configuration(IAppBuilder)
?Si ha actualizado desde una versión anterior de MVC, asegúrese de no tener
en su
web.config
. Suprimirá la llamada a la lógica de inicio.En cambio cámbielo a
true
Me doy cuenta de que ya mencionaste esto, pero a veces las personas (como yo) no leen toda la pregunta y simplemente saltan a las respuestas ...
En algún momento, cuando actualicé a MVC 5, esto se agregó y nunca lo vi hasta hoy.
fuente
Respuesta alternativa al problema original discutido: Owin "no dispara". En mi caso, pasé horas pensando que no estaba disparando debido a que no podía establecer un punto de interrupción.
Al depurar el inicio de OWIN en Visual Studio
IIS Express: la ejecución de "F5" se romperá en el código de inicio de OWIN
IIS: la ejecución de "F5" no se interrumpirá hasta que se cargue el código OWIN (y global.asax). Si se conecta a W3P.exe, podrá acceder a él.
fuente
Si tiene problemas para depurar el código en la
Startup
clase, también tuve este problema, o pensé que sí. El código se estaba disparando, pero creo que sucede antes de que el depurador se haya conectado, por lo que no puede establecer puntos de interrupción en el código y ver qué está sucediendo.Puede probar esto lanzando una excepción en el
Configuration
método de laStartup
clase.fuente
CONSEJOS DE DEPURACIÓN
Si la depuración no funciona, intente usar IIS Express o pruebe el siguiente método para IIS local
Usando IIS local
Por alguna razón, este método permite la depuración de este método:
Propina extra
Tal vez hacer esto vaciará un caché:
En web.config agregue el atributo OptimizeCompilations con un valor falso
<compilation debug = "true" ... optimizarCompilations = "false">
Ejecutar sitio
fuente
optimizeCompilations="false"
me funcionaTuve un problema similar a esto y la eliminación de los archivos temporales de ASP.NET lo solucionó. Espero que esto ayude a alguien.
fuente
Temporary ASP.NET Files
contenido de la carpeta y el inicio de Owin fue invocado.Yo tuve el mismo problema. Se instaló el paquete Microsoft.Owin.Host.SystemWeb pero durante la instalación NuGet no pudo agregar el dll como referencia por alguna razón. Asegúrese de que su proyecto tenga esa referencia. Si no, puede intentar reinstalar:
Tuve un error como el siguiente al reinstalar, pero de alguna manera funcionó:
fuente
En mi caso, el grupo de aplicaciones IIS no se configuró en v4. Fue v2.
Cambió el AppPool a v4 y todo estuvo bien.
fuente
Tuve el mismo problema cuando agregué Owin a un proyecto web existente. Finalmente encontré que el problema se debía a lo siguiente en el archivo web.config.
Remove assembly = "*" estaba causando el problema. Cuando elimino esta línea, se ejecutó el código de inicio de Owin. Finalmente lo cambio a lo siguiente y funcionó perfectamente
fuente
En mi caso, alguien cambia la ruta de salida de mi sitio web, el IIS Express incluso no carga OWIN y la clase de configuración no se verá afectada, por supuesto. Después de configurar la ruta de salida como "bin \", funciona bien.
fuente
En mi caso, este paquete Microsoft.Owin.Host.SystemWeb está presente en el proyecto.
Pero debajo de dos etiquetas no están presentes en web.config.
después de agregarlos funciona sin problemas.
fuente
En mi caso, mi web.config tenía
Para obligarlo a volver a Owin, necesitaba que fuera
fuente
Me equivoqué con muchas de las sugerencias en esta publicación.
Tenía lo siguiente pero aún no podía aterrizar en un punto de quiebre. Lanzar una excepción demostró que se estaba ingresando el código.
Finalmente, por desesperación, miré proyecto-> propiedades, y luego, en la sección WEB, también marqué la casilla de verificación CÓDIGO NATIVO (ASP.NET ya debería estar marcado).
Eso finalmente lo arregló para mí.
Nota: Estoy usando Visual Studio 2017 Professional.
fuente
No estoy seguro de si esto aún ayudará a alguien, pero he hecho todas las soluciones anteriores (y de algunas otras publicaciones) en vano.
Lo que solucionó el problema de mi parte fue poner una barra diagonal inversa al final del valor de RedirectUri en web.config (¡loco, lo sé!). RedirectUri es un parámetro en UseOpenIdConnectAuthentication.
Entonces, en lugar de:
Hacer esto:
Y actualizó la URL de respuesta en la configuración de la aplicación de Azure también.
Eso de alguna manera hizo que el Inicio se ejecute como se esperaba (probablemente borró algo de caché), y los puntos de interrupción ahora se disparan.
FYI. Estaba modelando mi código desde aquí: https://github.com/microsoftgraph/aspnet-connect-sample
fuente
Después de convertir una biblioteca de clase en un Proyecto de Aplicación Web , me encontré con esto y me volví terco. Resultó que en mi
.csProj
archivo tenía esto:OutputPath
solobin\
.fuente
Para mí fue porque no están en el mismo espacio de nombres. Después de eliminar mi AppStart de "project.Startup.AppStart" y dejar que Startup.cs y Startup.Auth.cs con el espacio de nombres "project.Startup", todo volvió a funcionar perfectamente.
Espero que sea de ayuda!
fuente
Si está viendo este problema con el alojamiento IIS, pero no cuando se está depurando F5, intente crear una nueva aplicación en IIS.
Esto me lo arregló. (Windows 10) Al final eliminé la aplicación IIS "incorrecta" y volví a crear una idéntica con el mismo nombre.
fuente
Creo que lo que algunas personas intentaban llegar arriba es que si desea hacer que su servidor OWIN "cobre vida" programáticamente, estaría llamando a algo como esto:
Una vez que realice esta llamada, verá la llamada a StartupMethod () activada en el depurador
fuente
El siguiente artículo me pareció muy útil:
https://weblog.west-wind.com/posts/2015/Apr/29/Adding-minimal-OWIN-Identity-Authentication-to-an-Existing-ASPNET-MVC-Application#MinimalCodeSummary
En mi caso, tuve que configurar lo siguiente antes de que la autenticación Owin funcionara en lugar de la autenticación de Windows:
fuente
Esto funcionó para mí:
fuente
Primero agregue la clase de autenticación OWIN y luego habilite la clave OWIN: AutomaticAppStartup en su web.config como Ahora disparará
fuente