Подтвердить что ты не робот

Элемент owin.Environment не найден в контексте

Недавно Microsoft представил новую идентификацию ASP.NET - замену старого (простого) членства. К сожалению, я не могу использовать эту новую систему членства в моем старом проекте, потому что он бросает System.InvalidOperationException: нет объекта owin.Environment в контексте. Это известная ошибка , но Microsoft молчала об этой проблеме. Самый простой способ воспроизвести эту ошибку - создать новое веб-приложение (MVC, WebForms или WebApi - не имеет значения) в VS 2013 (с обновлением предварительного просмотра веб-инструментов 2013), а затем перейти на страницу входа. Это будет работать. Затем измените пространство имен в приложении на что-либо другое, кроме оригинального пространства имен, и страница входа в систему выведет эту ошибку. Изменение пространства имен обратно на оригинал (тот, который вы использовали при создании проекта) решит эту проблему.

Похоже, что .net хранит где-то что-то, связанное с исходным пространством имен, но я не могу найти, что и где, это не в папке проекта. Я знаю, что stackoverflow не является местом для отчетов об ошибках, я просто надеюсь, что кто-то уже найдет решение этой проблемы, или люди, вовлеченные в разработку ASP.NET Identity, увидят это.

4b9b3361

Ответ 1

Скорее всего, он не может найти класс запуска OWIN. Стандартом по умолчанию для класса Startup является [AssemblyName].Startup. Если вы больше не следуете этому соглашению, вам нужно указать полное имя вашего класса Startup в Web.Config.   

В следующей версии пакета Microsoft.Owin.Host.SystemWeb теперь отображаются подробные сообщения об исключениях, когда класс Startup не может быть найден.

Ответ 2

Я создал два новых проекта под названием TesteMvc5.2 и TesteMvc5.0, и оба они не работали при запуске

это связано с тем, что пространство имен по умолчанию отличается от имени сборки. но после того, как я положил строку

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

на web.config он работал нормально.

Ответ 3

У меня была такая же проблема, она была исправлена ​​после того, как эта строка была в файле web.config:

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

Ответ 4

Я попробовал все, что упоминалось на этой странице, но ничего не получилось. Затем я узнал о настройке в IIS с именем owin: AutomaticAppStartup. Вы можете найти его на странице "Параметры приложения" Диспетчера IIS для веб-сайта по умолчанию. Проверьте, соответствует ли эта настройка. Если не установлено значение true. Это сработало для меня.

Это сайт, на котором я нашел ответ: http://gotoanswer.stanford.edu/?q=Microsoft.Owin.Host.SystemWeb+and+still+getting+No+owin.Environment+item+was+found+in+the+context

Ответ 5

У меня была такая же проблема. Я исправил его с помощью web.config.

Однако я изменил имя сборки и пространство имен и больше не нашел имя оригинальной сборки.

Затем я обнаружил, что очистка не удаляет исходную сборку из корзины.

При удалении мусорного ящика я смог удалить запись OWIN в web.config.

Ответ 6

Очистка временных файлов ASP.NET помогла мне в этой конкретной проблеме

Ответ 7

У меня была такая же ошибка, но, как оказалось, у меня была другая проблема с конфигурацией в моем web.config. У моего web.config отсутствовал атрибут defaultLanguage = "С#" в элементе компиляции в system.web.

В этом случае он будет по умолчанию VB. Поэтому, если у вас нет класса Startup, написанного на VB, вы должны изменить язык по умолчанию на С#.

Неправильно:

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

Это правильно (если вы не используете VB):

<compilation debug="true" defaultLanguage="c#" optimizeCompilations="true" targetFramework="4.6.1">

Ответ 8

Если вы случайно скопировали приведенную ниже конфигурацию из MVC4, вы должны удалить ее из web.config

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

Ответ 9

добавление языка по умолчанию для компиляции в web.config сделало это для меня!