Classe de démarrage OWIN manquante

226

J'obtiens cette erreur car mon projet n'est pas en mesure de trouver la référence pour OWINla classe de démarrage. J'ai même installé tous les packages de référence OWIN via Nuget obtenant toujours le même problème. J'utilise Visual Studio 2012et MVC4.

Les erreurs suivantes se sont produites lors de la tentative de chargement de l'application.

  • Aucun assembly trouvé contenant un OwinStartupAttribute.
  • Aucun assembly contenant une classe Startup ou [AssemblyName] .Startup n'a été trouvé. Pour désactiver la découverte de démarrage OWIN, ajoutez l'appSetting owin: AutomaticAppStartup avec une valeur "false" dans votre web.config. Pour spécifier l'assembly, la classe ou la méthode de démarrage OWIN, ajoutez l'appSetting owin: AppStartup avec la classe de démarrage complète ou le nom de la méthode de configuration dans votre web.config.
Krunal Patil
la source
7
En avez-vous un Startup.csdans le projet?
christiandev
4
Votre assemblage contient-il un OwinStartupAttribute? Est-ce que votre assemblage a Startupou [AssemblyName].Startupclasse? Avez-vous désactivé la découverte de démarrage OWIN, en ajoutant l'appSetting owin:AutomaticAppStartupavec une valeur "false" dans votre web.config? Avez-vous fait une de ces choses et vous vous demandez pourquoi cela ne fonctionne pas? Quelle est ta question?
ta.speot.is
1
C'est ca le truc. Il n'affiche pas la classe de démarrage OWIN lorsque j'essaie d'ajouter un nouvel élément dans mon projet. J'ai cherché sur Google, il est dit d'ajouter des références OWIN via des pépites et j'ai fait de même. Toujours pas la classe à ajouter.
Krunal Patil

Réponses:

213

Créez une classe avec le démarrage du nom, cela vous aidera.

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}
biscuit salé
la source
116
En plus de cela, si votre classe de démarrage n'est pas en quelque sorte dans votre espace de nom par défaut, ajoutez une ligne de configuration Web à la <appSettings>zone comme:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray
7
De nos jours, il y a 3 façons de configurer owin: asp.net/aspnet/overview/owin-and-katana/…
Jaider
22
En plus du commentaire de @ andrew-gray, la mise [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]en place AssemblyInfo.csfonctionnerait aussi.
Achille
14
vous avez également besoin du package Microsoft.Owin.Host.SystemWeb sinon le démarrage n'est pas appelé
rjlopes
7
Nous pourrions également ajouter cette ligne juste avant l'espace de noms de la classe Startup: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen
194

Dans notre projet, nous n'avions pas besoin de la fonctionnalité OWIN, nous avons donc supprimé toutes les références owin du projet de modèle ASP.NET MVC initial. Le problème s'est produit après la suppression de la classe de démarrage OWIN.

Le problème était les dll owin supplémentaires dans mon dossier bin. Lorsque je les ai supprimés, le problème a été résolu. Vous devez les supprimer en supprimant le dossier bin. Clean Solution ne supprime pas ces DLL.

D'une manière ou d'une autre, IIS exécute toujours les DLL OWIN lorsqu'elles se trouvent dans le dossier bin.

Hüseyin Yağlı
la source
6
J'ai également eu ce problème et j'ai également dû m'assurer que les références ne faisaient référence à aucune DLL OWIN.
pirate
2
Même problème et même solution. Cependant, dans mon cas, j'avais une branche de code avec Signalr et une sans. Lors du changement de branche, les DLL Signalr sont restées même après un nettoyage. Je devais les supprimer manuellement.
Kywillis
3
Juste une note pour dire que cela signifie littéralement que le dossier bin n'utilise pas seulement "Clean Solution" de Visual Studio qui dans mon cas supprimait la plupart des DLL mais pas toutes.
Alan Macdonald
1
Quelque chose qui a fonctionné pour moi, après la suppression des références OWIN et qui ne fonctionnait toujours pas correctement, était l'ajout <add key="owin:AutomaticAppStartup" value="false"/>en tant qu'appSetting. Juste quelques conseils aux gens qui essaient cela et ça ne réussit toujours pas.
LatentDenis
1
Pour les personnes pour lesquelles cela n'a pas fonctionné, assurez-vous que même après avoir supprimé les dossiers bin que vous allez dans les références du projet et supprimez les références aux DLL Owin. Dans mon cas, j'ai supprimé les dossiers bin, mais j'ai oublié que j'avais toujours les références (inutilisées) dans le fichier .csproj.
akousmata
104

Sur Visual Studio 2013 RC2, il existe un modèle pour cela. Ajoutez-le simplement au dossier App_Start.

entrez la description de l'image ici

Le modèle produit une telle classe:

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
la source
3
VS2015 en avait également besoin
Tom Stickel
2
Cela l'a fait pour moi - j'ai créé le fichier Startup.cs et l'ai rempli correctement mais j'ai manqué qu'il devait être dans le dossier App_Start. J'ai bien fonctionné sur ma machine de développement, mais une fois publié, je me suis trompé. Merci!
Jon Peterson
N'oubliez pas d'ajouter app.MapSignalR (); dans Configuration (application IAppBuilder), sinon 404 est renvoyé lors de l'appel de [YourSite] / signalr
Kasper Halvas Jensen
45

Si vous ne souhaitez pas utiliser le démarrage OWIN, voici ce que vous devez ajouter à votre fichier web.config :

Sous AppSettings, ajoutez la ligne suivante:

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

Voici à quoi cela devrait ressembler dans votre web.config:

  <appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
  </appSettings>
Yonatan Ayalon
la source
1
C'est en fait l'une des réponses complètes. Si vous n'êtes pas très dans les paramètres web.config, il est difficile de comprendre que vous devez ajouter une clé et une valeur dans le fichier xml
makoshichi
25

Jetez un œil au Startup.csfichier, il se peut que vous en manquiez un. Ce fichier est le point d'entrée pour OWIN, il semble donc qu'il manque. Jetez un œil OWIN Startup classici pour comprendre ce qui se passe.

Comme votre erreur le spécifie, vous pouvez désactiver cela dans le web.config en procédant comme suit ...

Pour désactiver la découverte de démarrage OWIN, ajoutez l'appSetting owin: AutomaticAppStartup avec une valeur "false" dans votre web.config

christiandev
la source
5
J'ai ajouté <add key="owin:AutomaticAppStartup" value="false" />au <appSettings>groupe et le Startup.cs n'était plus nécessaire.
webworm
@webworm, je mentionne cela ci-dessus.
christiandev
2
@christiandev que fera exactement <add key="owin:AutomaticAppStartup" value="false" />? Cela désactivera-t-il toute fonctionnalité? Avons-nous besoin de démarrer l'application plus tard pour pouvoir utiliser n'importe quelle fonctionnalité OWIN?
Flo
18

Vous devez d'abord créer votre fichier de démarrage et après vous devez spécifier les paramètres régionaux de ce fichier dans web.config, à l'intérieur de la balise appSettings avec cette ligne:

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

Cela a résolu mon problème.

Slaters
la source
11

J'ai eu ce problème, comprenez que ce n'est pas ce qui n'allait pas dans le cas de l'OP, mais dans mon cas, j'avais une classe de démarrage, elle ne le trouvait tout simplement pas par défaut.

Mon problème était que j'avais des espaces dans mon nom d'assembly, et donc l'espace de noms par défaut était différent du nom de l'assembly, donc l'espace de noms pour la classe de démarrage était différent du nom de l'assembly.

Comme l'erreur le suggère, par convention, il recherche [Assembly Name] .Startup pour la classe ... assurez-vous donc que l'espace de noms de votre classe Startup est le même que le nom de l'assembly. Correction du problème pour moi.

TCC
la source
1
J'avais un problème similaire. Le nom de mon projet avait un tiret «-», qui a été converti en soulignement par VS, donc l'espace de noms et la classe de démarrage étaient essentiellement différents.
LDJ
7

J'ai essayé la plupart des correctifs recommandés ici et je n'ai toujours pas pu éviter le message d'erreur. J'ai finalement réalisé une combinaison de quelques solutions recommandées:

  1. Ajout de cette entrée en haut de la AppSettingssection de mon web.config :

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

  2. Développé le nœud Références de mon projet et supprimé tout ce qui contenait la chaîne OWIN. (Je me sentais en sécurité car mon organisation n'est pas (et ne sera pas) un fournisseur OWIN actif à l'avenir)

J'ai ensuite cliqué Runet ma page d'accueil s'est chargée.

Jason Marsell
la source
4

Dans mon cas, j'avais renommé le projet et changé sa structure de dossiers. J'ai trouvé que la mise à jour de RootNameSpace et AssemblyName dans le fichier .csproj où l'erreur était levée a résolu l'erreur. Si vous avez modifié les chemins de votre projet, je vous recommande de le vérifier également.

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
Désapprendre
la source
Mes félicitations à la vache sacrée, mon frère, a été collée dessus comme pour toujours et n'a trouvé aucune solution jusqu'à ce que je lise ceci, le AssemblyName n'a pas été mis à jour après l'avoir changé manuellement. Maintenant ça marche! Merci beaucoup!
Mason
3

Mon cas? J'avais un fichier de démarrage, mais il est exclu du projet. Je viens de l'inclure et l'erreur est partie.

Gellie Ann
la source
3

Cela peut également se produire dans Visual Studio 2015 lorsque vous utilisez Azure AD avec un projet MVC. Ici, il crée le fichier de démarrage en tant que Startup.Auth.cs dans le dossier App_Start, mais il lui manquera le

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

Alors ajoutez-le et vous devriez être prêt à partir. Cela va avant le début de l'espace de noms.

Diceyus
la source
2

Il est également possible d'obtenir cette exception (même si vous avez une classe de démarrage correctement configurée) si vous exécutez via IIS Express et que votre répertoire virtuel n'est pas configuré correctement.

Lorsque j'ai rencontré ce problème, la résolution consistait simplement à appuyer sur le bouton 'Créer un répertoire virtuel' dans l'onglet 'Web' des propriétés du projet (à l'aide de Visual Studio 2013)

mcarter
la source
2

Essayez-vous vraiment d'ajouter OWIN à votre projet ou est-ce quelque chose d'inattendu?

  1. Si vous souhaitez ajouter OWIN, l'ajout d'une classe de démarrage est la solution.

  2. Dans le cas où vous ne avez besoin de référence à Owin :

    supprimez Owin.dll de votre dossier / bin .

    Owin.dll est celui qui essaie d'identifier la classe de démarrage.

despuestambien
la source
1

Bien que je ne puisse pas expliquer entièrement pourquoi cela a résolu le problème pour moi, j'ai rencontré un problème comme celui-ci après avoir changé mon projet d'API pour créer des dossiers séparés \debuget \release. Une fois que j'ai rétabli ce changement pour créer un \bindossier unique , les choses ont commencé à fonctionner.

J'ai écrit mon expérience ici: Impossible d'obtenir la classe de démarrage OWIN à exécuter dans IIS Express après avoir renommé le fichier de projet ASP.NET

Sam Storie
la source
1

J'ai rencontré ce problème après avoir expérimenté SignalR, puis l'avoir supprimé du projet. Pour résoudre, j'ai dû supprimer le contenu du dossier bin pour le site sur le serveur distant, puis publier à nouveau.

Owen Pauling
la source
1

Vérifiez simplement que votre packages.configfichier est archivé (lorsqu'il est exclu, il y aura un symbole de non-entrée rouge affiché dans l'explorateur). Pour une raison étrange, la mienne a été exclue et a causé ce problème.

Ian
la source
0

J'ai continué à recevoir la même erreur lorsque j'ai commencé mon projet à l'aide du tableau de bord du lien du navigateur dans VS2013. Mais, lorsque j'ai exécuté mon projet en mode débogage, cela fonctionnerait. Je ne pouvais pas comprendre pourquoi et comment faire fonctionner le Dashboard Link Dashboard. J'ai vérifié le fichier de démarrage, ça allait, j'ai ajouté la ligne appSetting comme décrit dans certaines des réponses "", mais rien n'a fonctionné.

Apparemment, ce que je faisais mal, c'était de cliquer sur le lien FAUX dans le tableau de bord du navigateur. Tous les liens des projets de solutions s'affichent dans le tableau de bord du navigateur, mais seul le lien des projets de démarrage fonctionne. Vous devez cliquer sur le lien du projet de démarrage.

Exemple: J'ai 2 projets, les deux s'affichent dans le tableau de bord du navigateur, mais seul celui marqué comme projet de démarrage fonctionnera (s'affiche en gras dans l'explorateur de solutions.) Je pensais que cela pourrait aider quelqu'un à faire l'évidence, cela m'a coûté 2 jours pour tomber sur l'évidence.

alikuli
la source
0

J'ai eu ce problème lorsque j'ai obtenu la dernière version de TFS alors que d'autres projets étaient ouverts dans plusieurs instances de VS. J'ai déjà tous les correctifs ci-dessus. La réouverture de VS a résolu le problème.

PersyJack
la source
0

Dans mon cas, je me suis connecté au serveur ftp. Pris la sauvegarde des fichiers actuels sur le serveur ftp. Supprimez tous les fichiers manuellement du serveur ftp. Solution propre, redéploiement du code. Ça a marché.

Kurkula
la source