web-dev-qa-db-ja.com

コンテキストにowin.Environmentアイテムが見つかりませんでした

Microsoft 導入済み 新しいASP.NET Identity-古い(シンプルな)メンバーシップの置き換え。残念ながら、古いプロジェクトではこの新しいメンバーシップシステムを使用できません。System.InvalidOperationExceptionがスローされるためです:owin.Environmentアイテムがコンテキストで見つかりませんでした。これは既知の バグ ですが、Microsoftはこの問題について沈黙を守っています。このバグを再現する最も簡単な方法は、VS 2013(Web Tools 2013 Preview Refreshを使用)で新しいWebアプリケーション(MVC、WebForms、WebApiは関係ありません)を作成し、ログインページに移動することです。それが動作します。次に、アプリケーションの名前空間を元の名前空間以外に変更すると、ログインページでそのエラーがスローされます。名前空間を元のプロジェクト(プロジェクトの作成時に使用した名前)に戻すと、この問題は解決します。

.netは元のネームスペースに関連する何かをどこかに保存しているように見えますが、プロジェクトフォルダーにないものをどこで見つけることができません。 stackoverflowはバグ報告の場所ではないことを知っています。誰かが既にこの問題の解決策を見つけているか、ASP.NET Identityの開発に関係する人々がこれを見ることを望んでいます。

28
graycrow

ほとんどの場合、OWINスタートアップクラスが見つかりません。 Startupクラスのデフォルトの規則は[AssemblyName] .Startupです。その規則に従っていない場合は、Web.ConfigでStartupクラスの完全な名前を指定する必要があります。

Microsoft.Owin.Host.SystemWebパッケージの次のリリースでは、Startupクラスが見つからない場合に詳細な例外メッセージがスローされるようになりました。

26
pranav rastogi

TesteMvc5.2とTesteMvc5.0という2つの新しいプロジェクトを作成しましたが、どちらも開始時に機能しませんでした

これは、デフォルトのネームスペースがアセンブリ名と異なるためです。しかし、私は線を入れた後

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

web.configでは問題なく動作しました。

8
Luiz Bicalho

まったく同じエラーが発生しましたが、判明したように、web.configに別の構成の問題がありました。 web.configには、system.webの下のコンパイル要素に属性defaultLanguage = "c#"がありませんでした。

この場合、デフォルトはVBになります。したがって、StartupクラスをVBで記述した場合を除き、デフォルト言語をC#に変更する必要があります。

正しくありません:

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

これは正しいです(VBを使用していない場合):

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

私は同じ問題を抱えていましたが、この行がweb.configにあることを確認した後に修正されました:

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

このページに記載されているすべてを試しましたが、何も機能しませんでした。次に、IIS named owin:AutomaticAppStartup。の設定について確認しました。デフォルトのWebサイトのマネージャーのIIS Managerのアプリケーション設定ページにあります。 。その設定がtrueであるかどうかを確認しますtrueに設定されていない場合、これはうまくいきました。

これは私が答えを見つけたウェブサイトです: http://gotoanswer.stanford.edu/?q=Microsoft.Owin.Host.SystemWeb+and+still+getting+No+owin.Environment+item+was + found + in + the + context

4
Ron Dow

これと同じ問題がありました。 web.configで修正しました。

ただし、アセンブリ名と名前空間を変更したため、元のアセンブリ名はどこにも見つかりませんでした。

その後、クリーンでは元のアセンブリがビンから削除されないことを発見しました。

ゴミ箱を削除した後、web.config OWINエントリを削除できました。

3
user2697956

ASP.NET一時ファイルのクリーニングは、この正確な問題の解決に役立ちました

2

上記の答えはどれも私にとってはうまくいきませんでした。

私のプロジェクトには、以下を含む「スタートアップ」クラスがありませんでした。

using Microsoft.Owin;
using Owin;

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

「Startup.cs」と呼ばれるこのファイルは、プロジェクトのルートフォルダー(〜/)にあります。

私の「Web.config」には、他の返信に投稿されたこの「Owin」構成はありません。

1
Daniel

以下の設定をMVC4からコピーした場合は、web.configから削除する必要があります

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

同じ問題がありました。共有ソリューションをありがとう。この..

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

私のために修正

0
Zia UsafXai

これがなぜ機能するのかわかりませんが、実際に機能しました!

私の問題はVS2013にありました。 WebConfigで、デバッグがtrueに設定され、そのエラーが表示されました。 falseに設定すると正常に機能し、trueにリセットしても正常に機能し続けました。

最初にデバッグがfalseに変わる前にtrueだったときに、スタートアップコードにブレークポイントを設定しましたが、まったく到達しませんでした。保存をfalseに押してからtrueに戻すと、スタートアップコードが呼び出され、プログラムは正常に機能します。

0
Dov Miller