Falta la clase de inicio de OWIN

226

Recibo este error ya que mi proyecto no puede encontrar la referencia para la OWINclase de inicio. Incluso he instalado todos los paquetes de referencia de OWIN a través de Nuget y sigo teniendo el mismo problema. Estoy usando Visual Studio 2012y MVC4.

Se produjeron los siguientes errores al intentar cargar la aplicación.

  • No se encontró ensamblado que contenga un OwinStartupAttribute.
  • No se encontró ningún ensamblado que contenga una clase Startup o [AssemblyName] .Startup. Para deshabilitar el descubrimiento de inicio de OWIN, agregue appSetting owin: AutomaticAppStartup con un valor de "false" en su web.config. Para especificar el ensamblaje, clase o método de inicio de OWIN, agregue appSetting owin: AppStartup con la clase de inicio totalmente calificada o el nombre del método de configuración en su web.config.
Krunal Patil
fuente
77
¿Tienes un Startup.csen el proyecto?
christiandev
44
¿Su ensamblaje contiene un OwinStartupAttribute? ¿Su asamblea a Startupo [AssemblyName].Startupclase? ¿Ha deshabilitado el descubrimiento de inicio de OWIN, agregando la configuración de la aplicación owin:AutomaticAppStartupcon un valor de "falso" en su web.config? ¿Has hecho una de estas cosas y te preguntas por qué no funciona? ¿Cuál es tu pregunta?
ta.speot.is
1
Esa es la cosa. No muestra la clase de inicio OWIN cuando intento agregar un nuevo elemento en mi proyecto. Busqué en google, dice agregar referencias OWIN a través de nugets e hice lo mismo. Todavía no obtengo la clase para agregar.
Krunal Patil

Respuestas:

213

Crear una clase con inicio de nombre esto lo ayudará.

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}
galleta
fuente
116
Además de esto, si su clase de inicio de alguna manera no está en su espacio de nombre predeterminado, agregue una línea de configuración web al <appSettings>área como:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray
77
Hoy en día, hay 3 formas de configurar owin: asp.net/aspnet/overview/owin-and-katana/…
Jaider
22
Además de comentario de Andrew @-gris, poniendo [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]en AssemblyInfo.cstrabajaría también.
Aquiles
14
también necesita el paquete Microsoft.Owin.Host.SystemWeb, de lo contrario no se llama al inicio
rjlopes
77
También podríamos agregar esta línea justo antes del espacio de nombres de la clase Startup: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen
194

En nuestro proyecto, no necesitábamos la funcionalidad OWIN, por lo que eliminamos todas las referencias owin del proyecto de plantilla inicial ASP.NET MVC. El problema ocurrió después de eliminar la clase de inicio OWIN.

El problema era el extra owin dll en mi carpeta bin. Cuando los eliminé, el problema se resolvió. Debe eliminarlos eliminando la carpeta bin. Solución limpia no elimina estos dlls.

De alguna manera, IIS todavía ejecuta los archivos DLL de OWIN cuando están en la carpeta bin.

Hüseyin Yağlı
fuente
66
También tuve este problema y también tuve que asegurarme de que las Referencias no hicieran referencia a ninguna DLL de OWIN.
hacker
2
Mismo problema y misma solución. Sin embargo, en mi caso tenía una rama de código con Signalr y otra sin ella. Al cambiar de rama, los dlls de Signalr permanecieron incluso después de una limpieza. Necesitaba eliminarlos manualmente.
Kywillis
3
Solo una nota para decir esto significa literalmente que la carpeta bin no solo usa "Solución limpia" de Visual Studio, que en mi caso estaba eliminando la mayoría de las DLL pero no todas.
Alan Macdonald
1
Algo que funcionó para mí, es después de eliminar las referencias de OWIN y todavía no funcionaba correctamente, se agregaba <add key="owin:AutomaticAppStartup" value="false"/>como una configuración de aplicación. Solo algunos consejos para las personas que intentan esto y todavía no tienen éxito.
LatentDenis
1
Para las personas para quienes esto no funcionó, asegúrese de que, incluso después de haber eliminado las carpetas bin, vaya a las referencias del proyecto y elimine las referencias a los archivos DLL de Owin. En mi caso, eliminé las carpetas bin pero olvidé que todavía tenía las referencias (no utilizadas) en el archivo .csproj.
akousmata
104

En Visual Studio 2013 RC2, hay una plantilla para esto. Simplemente agréguelo a la carpeta App_Start.

ingrese la descripción de la imagen aquí

La plantilla produce tal clase:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(WebApiOsp.App_Start.Startup))]

namespace WebApiOsp.App_Start
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
        }
    }
}
Timuçin
fuente
3
VS2015 también necesitaba esto
Tom Stickel
2
Esto lo hizo por mí: creé el archivo Startup.cs y lo rellené correctamente, pero no pude ver que necesitaba estar en la carpeta App_Start. Funcionó bien en mi máquina de desarrollo, pero una vez publicado fue error. ¡Gracias!
Jon Peterson
Recuerde agregar app.MapSignalR (); en Configuración (aplicación IAppBuilder), de lo contrario, se devuelve 404 al llamar a [YourSite] / signalr
Kasper Halvas Jensen
45

Si no desea utilizar el inicio de OWIN, esto es lo que debe agregar a su archivo web.config :

En AppSettings, agregue la siguiente línea:

    <add key="owin:AutomaticAppStartup" value="false" />

Así es como debería verse en su web.config:

  <appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
  </appSettings>
Yonatan Ayalon
fuente
1
Esta es en realidad una de las respuestas completas. Si no está muy interesado en la configuración de web.config, es difícil darse cuenta de que debe agregar una clave y un valor en el archivo xml
makoshichi
25

Eche un vistazo al Startup.csarchivo, es posible que le falte uno de estos. Este archivo es el punto de entrada para OWIN, por lo que parece que falta. Echa un vistazo OWIN Startup classaquí para entender qué está pasando.

Como lo especifica su error, puede deshabilitar esto en web.config haciendo lo siguiente ...

Para deshabilitar el descubrimiento de inicio de OWIN, agregue el appSetting owin: AutomaticAppStartup con un valor de "false" en su web.config

christiandev
fuente
55
Agregué <add key="owin:AutomaticAppStartup" value="false" />al <appSettings>grupo y Startup.cs ya no era necesario.
webworm
@webworm, lo menciono anteriormente.
christiandev
2
@christiandev ¿qué hará exactamente <add key="owin:AutomaticAppStartup" value="false" />? ¿Deshabilitará alguna funcionalidad? ¿Necesitamos iniciar la aplicación más tarde para poder usar cualquier funcionalidad de OWIN?
Flo
18

Primero debe crear su archivo de inicio y luego debe especificar la configuración regional de este archivo en web.config, dentro de la etiqueta appSettings con esta línea:

<add key="owin:AppStartup" value="[NameSpace].Startup"/>

Resolvió mi problema.

Slaters
fuente
11

Tuve este problema, entiendo que esto no es lo que estaba mal en el caso del OP, pero en mi caso tenía una clase de inicio, simplemente no la encontraba por defecto.

Mi problema era que tenía espacios en mi Nombre de ensamblado y, por lo tanto, el espacio de nombres predeterminado era diferente del nombre del ensamblado, por lo tanto, el espacio de nombres para la clase de inicio era diferente del nombre del ensamblado.

Como sugiere el error, por convención busca [Nombre de ensamblaje]. Inicio de la clase ... así que asegúrese de que el espacio de nombres para su clase de Inicio sea el mismo que el nombre de Ensamblaje. Solucionó el problema para mí.

TCC
fuente
1
Tuve un problema similar. El nombre de mi proyecto tenía un guión '-', que VS convirtió en subrayado, por lo que el espacio de nombres y la clase de inicio eran esencialmente diferentes.
LDJ
7

Intenté la mayoría de las soluciones recomendadas aquí, y aún no pude evitar el mensaje de error. Finalmente realicé una combinación de algunas soluciones recomendadas:

  1. Agregué esta entrada a la parte superior de la AppSettingssección de mi web.config :

    <add key="owin:AutomaticAppStartup" value="false"/>

  2. Expandí el nodo Referencias de mi proyecto y eliminé todo lo que contenía la cadena OWIN. (Me sentí seguro al hacerlo ya que mi organización no es (y no será) un proveedor activo de OWIN en el futuro)

Luego hice clic Runy mi página de inicio se cargó de inmediato.

Jason Marsell
fuente
4

En mi caso, cambié el nombre del proyecto y cambié su estructura de carpetas. Descubrí que la actualización de RootNameSpace y AssemblyName en el archivo .csproj donde se produjo el error resolvió el error. Si ha modificado las rutas de su proyecto, le recomiendo comprobar esto también.

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
Desaprender
fuente
Santa vaca, felicitaciones hermano, estaba atrapado en eso como siempre y no encontró solución hasta que leí esto, el AssemblyName no se actualizó después de cambiarlo manualmente. ¡Ahora funciona! Muchas gracias!
Mason
3

¿Mi caso? Tenía un archivo de inicio, pero está excluido en el proyecto. Lo acabo de incluir y el error se fue.

Gellie Ann
fuente
3

Esto también se puede enfrentar en Visual Studio 2015 cuando usa Azure AD con un proyecto MVC. Aquí crea el archivo de inicio como Startup.Auth.cs en la carpeta App_Start pero le faltará el

[assembly: OwinStartup(typeof(MyWebApp.Startup))]

Así que agrégalo y estarás listo para comenzar. Esto va antes de que comience el espacio de nombres.

Diceyus
fuente
2

También es posible obtener esta excepción (incluso cuando tiene una clase de inicio configurada correctamente) si se ejecuta a través de IIS Express y su directorio virtual no está configurado correctamente.

Cuando encontré este problema, la resolución fue simplemente presionar el botón 'Crear directorio virtual' en la pestaña 'Web' de las propiedades del proyecto (Uso de Visual Studio 2013)

mcarter
fuente
2

¿Realmente estás tratando de agregar OWIN a tu proyecto o es algo inesperado?

  1. En caso de que desee agregar OWIN, agregar una clase de inicio es el camino a seguir.

  2. En caso de que no necesite ninguna referencia a Owin :

    elimine Owin.dll de su carpeta / bin .

    Owin.dll es el que intenta identificar la clase de inicio.

despuestambien
fuente
1

Si bien no puedo explicar completamente por qué esto resolvió el problema para mí, me encontré con un problema como este después de cambiar mi proyecto de API para compilar para separar \debugy \releasecarpetas. Una vez que revertí ese cambio de nuevo para construir en una sola \bincarpeta, las cosas comenzaron a funcionar.

Escribí mi experiencia aquí: no se puede ejecutar la clase de inicio OWIN en IIS Express después de cambiar el nombre del archivo de proyecto ASP.NET

Sam Storie
fuente
1

Me encontré con este problema después de experimentar con SignalR y luego eliminarlo del proyecto. Para resolver tuve que eliminar el contenido de la carpeta bin para el sitio en el servidor remoto y luego publicar nuevamente.

Owen Pauling
fuente
1

Simplemente verifique que su packages.configarchivo esté registrado (cuando se excluya, habrá un símbolo rojo de no entrada mostrado en el explorador). Por alguna extraña razón, la mía fue excluida y causó este problema.

Ian
fuente
0

Seguí recibiendo el mismo error cuando comencé mi proyecto usando el Panel de control del navegador en VS2013. Pero, cuando ejecuté mi proyecto en modo de depuración, funcionaría. No pude entender por qué y cómo hacer que funcione el Panel de control del navegador. Revisé el archivo de inicio, estaba bien, agregué la línea de configuración de la aplicación como se describe en algunas de las respuestas "", pero nada funcionó.

Aparentemente, lo que estaba haciendo mal era hacer clic en el enlace INCORRECTO en el Panel del navegador. Todos los enlaces de proyectos de Soluciones se muestran en el Panel del navegador, pero solo funciona el enlace de proyectos de inicio. Debe hacer clic en el enlace del proyecto de inicio.

Ejemplo: tengo 2 proyectos, ambos se muestran en el Panel del navegador, pero solo el marcado como proyecto de inicio funcionará (se muestra en negrita en el Explorador de soluciones). Pensé que esto podría ayudar a alguien a hacer lo obvio, me costó 2 días para tropezar con lo obvio.

alikuli
fuente
0

Tuve este problema cuando obtuve la última versión de TFS mientras otros proyectos estaban abiertos en múltiples instancias de VS. Ya tengo todas las soluciones anteriores. Reabrir VS solucionó el problema.

PersyJack
fuente
0

En mi caso, inicié sesión en el servidor ftp. Tomó una copia de seguridad de los archivos actuales en el servidor ftp. Elimine todos los archivos manualmente del servidor ftp. Solución limpia, redistribuyó el código. Funcionó.

Kurkula
fuente