web-dev-qa-db-fra.com

Aucun élément owin.Environment n'a été trouvé dans le contexte

Microsoft a récemment introduit une nouvelle identité ASP.NET - remplace l’ancienne adhésion (simple). Malheureusement, je ne peux pas utiliser ce nouveau système d'adhésion dans mon ancien projet, car il génère une exception System.InvalidOperationException: aucun élément owin.Environment n'a été trouvé dans le contexte. Ceci est un bug connu, mais Microsoft garde le silence sur ce problème. Le moyen le plus simple de reproduire ce bogue - consiste à créer une nouvelle application Web (MVC, WebForms ou WebApi - peu importe) dans VS 2013 (avec Web Tools 2013 Preview Refresh), puis à accéder à la page de connexion. Ça va marcher. Ensuite, changez l’espace de nom de votre application en un espace autre que l’espace de nom original et la page de connexion affichera cette erreur. Remettre l’espace de noms à l’original (celui que vous avez utilisé lors de la création d’un projet) résoudra ce problème. 

On dirait que .net stocke quelque part quelque chose lié à l’espace de noms original, 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 lieu pour un rapport de bogue, j'espère juste que quelqu'un aura déjà trouvé une solution à ce problème ou peut-être que les personnes impliquées dans le développement de ASP.NET Identity verront cela.

27
graycrow

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

La prochaine version du package Microsoft.Owin.Host.SystemWeb renvoie désormais des messages d'exception détaillés lorsque la classe de démarrage est introuvable. 

26
pranav rastogi

J'ai créé deux nouveaux projets appelés TesteMvc5.2 et TesteMvc5.0 et les deux ne fonctionnaient pas au début

c'est parce que l'espace de nom par défaut est différent du nom d'assembly . mais après je mets la ligne 

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

sur le web.config cela a bien fonctionné.

8
Luiz Bicalho

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

<add key="owin:AutomaticAppStartup" value="true" />
6
cesar-moya

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

Dans ce cas, il utilisera par défaut VB. Ainsi, à moins que votre classe de démarrage ne soit écrite en VB, vous devez changer le langage par défaut en C #.

Pas correcte:

<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">
6
Drol

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 sur la page Paramètres de l'application du gestionnaire IIS du site Web par défaut. Vérifiez si ce paramètre est vrai. Si non défini sur true. Cela a fonctionné pour moi.

C'est le site Web où j'ai trouvé la réponse: http://gotoanswer.stanford.edu/?q=Microsoft.Owin.Host.SystemWeb+and+still+getting+No+owin.Environment+item+ était + trouvé + dans + le + contexte

4
Ron Dow

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

Cependant, j'avais changé le nom de l'assembly et l'espace de nom et je ne trouvais plus le nom original de l'assembly.

J'ai alors découvert que le nettoyage ne retirait pas l'assemblage d'origine de la corbeille.

Après avoir supprimé la corbeille, j'ai pu supprimer l'entrée OWIN de web.config.

3
user2697956

Le nettoyage des fichiers temporaires ASP.NET m'a aidé à résoudre ce problème

2
Gatis Bergšpics

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

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

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

En fait, il manquait à la classe "Startup" la classe suivante:

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é "Startup.cs" se trouve dans le dossier racine (~ /) de votre projet.

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

0
Daniel

J'ai eu 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
Zia UsafXai

Je ne sais pas pourquoi cela fonctionne mais ça a fonctionné!

Mon problème était dans VS2013. Dans WebConfig, le débogage était défini sur true et j'ai eu cette erreur. Lorsque je l'ai défini sur false, cela a bien fonctionné, puis je suis revenu à true et il a continué de fonctionner correctement!

Au début, quand le débogage était vrai avant de passer à faux, 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 être passé à false, en appuyant sur Save puis sur True, le code de démarrage a été appelé et le programme fonctionne comme il se doit.

0
Dov Miller