Je reçois cette erreur car mon projet ne peut pas trouver la référence pour la classe de démarrage OWIN
. J'ai même installé tous les packages de référence OWIN via Nuget, toujours avec le même problème. J'utilise Visual Studio 2012
et MVC4
.
Les erreurs suivantes se sont produites lors de la tentative de chargement de l'application.
- Aucun assemblage trouvé contenant un OwinStartupAttribute.
- Aucun assemblage contenant une classe de démarrage ou [AssemblyName] .Startup. Pour désactiver la découverte de démarrage OWIN, ajoutez le owin appSetting: AutomaticAppStartup avec la valeur "false" dans votre fichier web.config. Pour spécifier l'assembly, la classe ou la méthode de démarrage OWIN, ajoutez le nom appSetting owin: AppStartup avec le nom complet de la classe de démarrage ou de la méthode de configuration dans votre fichier web.config.
Créer une classe avec le nom de démarrage, cela vous aidera.
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
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 est survenu après la suppression de la classe de démarrage OWIN.
Le problème était la dll supplémentaire owin dans mon dossier bin. Lorsque je les ai supprimés, le problème était résolu. Vous devez les supprimer en supprimant le dossier bin. Nettoyer la 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.
Sur Visual Studio 2013 RC2, il existe un modèle pour cela. Ajoutez-le simplement au dossier App_Start.
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
}
}
}
Si vous ne souhaitez pas utiliser le démarrage d'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>
Recherchez le fichier _Startup.cs
_, il vous manque peut-être un de ceux-ci. Ce fichier est le point d’entrée pour OWIN, il semble donc que cela manque. Jetez un oeil à OWIN Startup class
ici pour comprendre ce qui se passe.
Comme votre erreur le spécifie, vous pouvez le désactiver dans le fichier web.config en procédant comme suit ...
Pour désactiver la découverte au démarrage d'OWIN, ajoutez le owin d'appSetting: AutomaticAppStartup avec la valeur "false" dans votre fichier web.config.
Vous devez d’abord créer votre fichier de démarrage puis spécifier les paramètres régionaux de ce fichier dans web.config, dans la balise appSettings avec cette ligne:
<add key="owin:AppStartup" value="[NameSpace].Startup"/>
Cela a résolu mon problème.
J'ai eu ce problème, comprenez que ce n'est pas ce qui n'allait pas dans le cas du PO, mais dans mon cas, j'avais une classe de démarrage, ce n'était tout simplement pas le trouver par défaut.
Mon problème était que j'avais des espaces dans mon nom d'assembly et que, par conséquent, l'espace de nommage par défaut était différent du nom d'assembly. Par conséquent, l'espace de nommage de la classe de démarrage était différent du nom de l'assembly.
Comme le suggère l'erreur, par convention, il recherche [nom de l'assembly] .Startup pour la classe ... alors assurez-vous que l'espace de noms de votre classe de démarrage est identique au nom de l'assembly. Correction du problème pour moi.
J'ai essayé la plupart des correctifs recommandés ici et je ne pouvais toujours pas éviter le message d'erreur. J'ai finalement réalisé une combinaison de quelques solutions recommandées:
Ajout de cette entrée en haut de la section AppSettings
de mon web.config:
<add key="owin:AutomaticAppStartup" value="false"/>
Développé le noeud 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'était pas (et ne serait pas) un fournisseur OWIN actif à l'avenir)
J'ai ensuite cliqué sur Run
et ma page d'accueil a été chargée.
Dans mon cas, j'avais renommé le projet et changé sa structure de dossiers. J'ai constaté que la mise à jour de RootNameSpace et de AssemblyName dans le fichier .csproj où l'erreur était générée avait résolu l'erreur. Si vous avez modifié les chemins de votre projet, je vous recommande également de vérifier cela.
<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
Mon cas? J'ai eu le fichier de démarrage, mais il est exclu dans le projet. Je viens de l'inclure et l'erreur est parti.
Cela pourrait se produire également 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 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.
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 IIS Express et que votre répertoire virtuel n'est pas configuré correctement.
Lorsque j'ai rencontré ce problème, la solution consistait simplement à appuyer sur le bouton "Créer un répertoire virtuel" dans l'onglet "Web" des propriétés du projet (Utilisation de Visual Studio 2013).
Essayez-vous vraiment d'ajouter OWIN à votre projet ou est-ce quelque chose d'inattendu?
Si vous souhaitez ajouter OWIN, l’ajout d’une classe de démarrage est tout indiqué.
Dans le cas où vous n'avez pas besoin de référence à Owin:
supprimez Owin.dll de votre dossier/bin.
Owin.dll est celui qui tente d'identifier la classe de démarrage.
J'ai rencontré ce problème après avoir expérimenté SignalR, puis l'avoir supprimé du projet. Pour résoudre ce problème, je devais supprimer le contenu du dossier bin du site sur le serveur distant, puis le publier à nouveau.
Il suffit de vérifier que votre fichier packages.config
est bien archivé (lorsqu'il est exclu, un symbole rouge "no entry" apparaît dans l’explorateur). Pour une raison étrange, le mien a été exclu et a causé ce problème.
Bien que je ne puisse pas expliquer en détail pourquoi cela résout le problème pour moi, je me suis heurté à un problème comme celui-ci après avoir modifié mon projet d'API afin qu'il soit généré pour séparer les dossiers \debug
et \release
. Une fois que j'ai rétabli ce changement, la création d'un dossier \bin
unique a commencé à fonctionner.
J'ai écrit mon expérience ici: Impossible d'exécuter la classe de démarrage OWIN dans IIS Express après avoir renommé le fichier de projet ASP.NET
Dans mon cas, je me suis connecté au serveur FTP. A effectué une sauvegarde des fichiers actuels sur le serveur FTP. Supprimez tous les fichiers manuellement du serveur FTP. Solution propre, redéployé le code. Ça a marché.
Je continuais à avoir la même erreur lorsque j'ai commencé mon projet en utilisant le tableau de bord de lien de navigateur dans VS2013. Mais, lorsque j’exécutais mon projet en mode débogage, cela fonctionnait. Je ne pouvais pas comprendre pourquoi et comment faire fonctionner le tableau de bord du navigateur. J'ai vérifié le fichier de démarrage, tout allait bien, a ajouté la ligne appSetting comme décrit dans certaines réponses "", mais rien n'a fonctionné.
Apparemment, je me suis trompé en cliquant sur le lien FAUX dans le tableau de bord du navigateur. Tous les liens de projets de solutions apparaissent dans le tableau de bord du navigateur, mais seul le lien de projets de démarrage fonctionne. Vous devez cliquer sur le lien du projet de démarrage.
Exemple: J'ai 2 projets, tous deux affichés 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.) jours à tomber sur l'évidence.
J'ai eu ce problème quand j'ai eu le dernier sur 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.