Non owin.L'élément environnement a été trouvé dans le contexte

Microsoft a récemment introduit nouveau ASP.NET identité-remplacement de L'ancienne (Simple)adhésion. Malheureusement, je ne peux pas utiliser ce nouveau système d'adhésion dans mon ancien projet car il lance le système.InvalidOperationException: aucun owin.L'élément environnement a été trouvé dans le contexte. Ceci est un bug connu , mais Microsoft garde le silence sur ce problème. La façon la plus simple de reproduire ce bug - c'est de créer une nouvelle application web (MVC, WebForms ou WebApi - n'a pas d'importance) dans VS 2013 (avec Web Tools 2013 Preview Refresh) puis accédez à la page de connexion. Il va travailler. Ensuite, changez l'espace de noms dans votre application pour autre chose que l'espace de noms d'origine et la page de connexion lancera cette erreur. Changer l'espace de noms en original (celui que vous avez utilisé lors de la création d'un projet) résoudra ce problème.

Il semble que. NET stocke quelque part quelque chose lié à l'espace de noms d'origine, mais je ne trouve pas quoi et où, ce n'est pas dans le dossier du projet. Je sais que stackoverflow n'est pas un endroit pour un rapport de bogue, j'espère juste que quelqu'un a déjà trouvé une solution à ce problème ou peut-être des personnes impliquées dans le développement de ASP.NET L'identité le verra.

23
demandé sur graycrow 2013-08-14 17:05:14

12 réponses

Très probablement, il ne peut pas trouver la classe de démarrage OWIN. La convention par défaut pour la classe de démarrage est [AssemblyName].Démarrage. Si vous ne suivez plus cette convention, vous devrez spécifier le nom complet de votre classe de démarrage sur le Web.Config.

La prochaine version de Microsoft.Owin.Hôte.Le paquet SystemWeb lance maintenant des messages d'exception détaillés lorsque la classe de démarrage est introuvable.

24
répondu pranav rastogi 2013-08-16 03:47:42

J'ai créé deux nouveaux projets appelés TesteMvc5.2 et TesteMvc5.0 et les deux n'ont pas fonctionné au démarrage

C'est parce que l'espace de noms par défaut est différent du nom de l'assembly. mais après avoir mis la ligne

<add key="owin:AppStartup" value="TesteMvc5._2.Startup, TesteMvc5.2" />

Sur le web.config cela a bien fonctionné.

7
répondu Luiz Bicalho 2013-08-20 02:10:02

J'ai eu le même problème, il a été corrigé après s'être assuré que cette ligne était dans le web.configuration:

<add key="owin:AutomaticAppStartup" value="true" />
6
répondu cesar-moya 2015-07-19 18:48:59

J'ai eu exactement la même erreur, mais il s'est avéré que j'avais un autre problème de configuration dans mon web.config. Mon web.config manquait l'attribut defaultLanguage="c#" dans l'élément de la compilation sous système.Web.

Dans ce cas, il sera par défaut à VB. Donc, à moins que votre classe de démarrage ne soit écrite en VB, vous devez changer la langue par défaut en C#.

Incorrect:

<compilation debug="true" optimizeCompilations="true" targetFramework="4.6.1">

Ceci est correct (sauf si vous utilisez VB):

<compilation debug="true" defaultLanguage="c#" optimizeCompilations="true" targetFramework="4.6.1">
5
répondu Drol 2016-03-07 17:04:12

J'ai essayé tout ce qui est mentionné sur cette page mais rien n'a fonctionné. Ensuite, j'ai découvert un paramètre dans IIS nommé owin: AutomaticAppStartup. Vous pouvez le trouver dans la page Paramètres de L'Application du Gestionnaire IIS pour le Site Web par défaut. Vérifiez si le réglage est vrai. Si cela n'est pas vrai. Cela a fonctionné pour moi.

C'est le site où j'ai trouvé le réponse: http://gotoanswer.stanford.edu/?q=Microsoft.Owin.Host.SystemWeb+and+still+getting+No+owin.Environment+item+was+found+in+the+context

4
répondu Ron Dow 2015-03-09 20:50:28

J'ai eu ce même problème. Je l'ai réparé avec le web.config.

Cependant, j'avais changé le nom et l'espace de noms de l'assembly et je n'ai plus trouvé le nom de l'assembly d'origine.

J'ai ensuite découvert que clean ne supprimait pas l'assemblage d'origine du bac.

Après avoir supprimé la litière bin, j'ai pu supprimer le web.config OWIN entrée.

3
répondu user2697956 2013-11-02 21:20:13

Nettoyage ASP.NET les fichiers temporaires m'ont aidé avec ce problème exact

2
répondu Gatis Bergšpics 2015-10-30 15:17:35

Si vous avez copié la configuration ci-dessous de MVC4, vous devez la supprimer du web.config

<add key="owin:AutomaticAppStartup" value="false" />
1
répondu Mathi Rajan 2016-01-13 10:26:16

Avait le même problème. Merci pour les solutions partagées. ce..

<add key="owin.AppStartup" value="Namespace.Startup, Namespace"/>
<add key="owin:AutomaticAppStartup" value="false"/>  

Fixé pour moi

0
répondu Zia UsafXai 2018-05-25 11:09:31

Je n'ai aucune idée pourquoi cela fonctionne mais c'est arrivé!

Mon problème était dans VS2013. Dans le WebConfig, debug a été défini sur true et j'ai eu cette erreur. Quand je l'ai mis à false, cela a bien fonctionné, puis je l'ai réinitialisé à true et cela a continué à fonctionner correctement!

Au début, lorsque debug était true avant de passer à false, j'ai mis un point d'arrêt dans mon code de démarrage et il n'a pas été atteint du tout. Après avoir changé à false en appuyant sur save puis sur true le code de démarrage a été appelé et le programme fonctionne comme ça devrait.

0
répondu Dov Miller 2018-07-02 09:27:54

Aucune des réponses ci-dessus n'a fonctionné pour moi.

S'est avéré que mon projet manquait la classe "Startup" qui contient les éléments suivants:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(NAMESPACE.Startup))]
namespace NAMESPACE
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

Ce fichier appelé " démarrage.c" est situé dans le dossier racine (~/) de votre projet.

Mon " Web.config "n'a aucune de cette configuration" Owin " affichée sur les autres réponses.

0
répondu Daniel 2018-07-10 20:13:16

Ajout de la langue par défaut à la compilation dans le web.config il l'a fait pour moi!

-1
répondu David 2017-03-02 12:09:18