web-dev-qa-db-ja.com

[Owin]が新しいプロジェクトでnull例外をスローするのはなぜですか?

私はかなり奇妙な問題を抱えていますが、修正方法や修正できるかどうかわかりません。

私はこの問題について調査を行いましたが、原因の原因を見つけることができません。

私は http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-googleでかなり簡単なガイドに従っています-oauth2-and-openid-sign-on

SSLを有効にし、controllerを変更してhttpsを要求すると、次のエラーが表示されます:

「/」アプリケーションのサーバーエラー。

オブジェクト参照がオブジェクトインスタンスに設定されていません。

説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細とコードのどこで発生したかについては、スタックトレースを確認してください。

例外の詳細:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

ソースエラー:

現在のWeb要求の実行中に、未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタックトレースを使用して特定できます。

スタックトレース:

[NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。]
Microsoft.Owin.Security.Cookies.CookieAuthenticationProvider.Exception(CookieExceptionContext context)+49
Microsoft.Owin.Security.Cookies.d__2.MoveNext()+3698 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()+24 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext()+810 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスクタスク)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext()+427システム。 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641システム。 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641システム。 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641システム。 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext()+287 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスクタスク)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__2.MoveNext()+272 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()+22 Microsoft.Owin.Host.SystemWeb.Infrastructure.ErrorState.Rethrow()+33 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar)+150
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar)+42
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+415 System.Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&completedSynchronously)+155

バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.34237

SSLをオフにすると問題が修正されます。また、startup.authin app_startSSLの問題を修正します。

誰がこれが起こっているのか知っていますか?

50
micah hawman

Sandeepの答えと同様に、Cookie認証プロバイダーも更新しました。例外を除いて、エラーを飲み込む代わりに、例外をスローして、根本的な問題が何であるかを確認できるようにしました。

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        // Enables the application to validate the security stamp when the user logs in.
        // This is a security feature which is used when you change a password or add an external login to your account.  
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),

            /* I changed this part */
            OnException = (context =>
            {
                throw context.Exception;
            })
    }                
});

私にとって根本的な問題は、モデルを変更し、新しい移行を追加するのを忘れていたことです。

33
Ben Cull

同様のエラーが発生していましたが、EF構成をDropCreateDatabaseIfModelChanges <Context>からDropCreateDatabaseAlways <Context>に変更したとき。

エラーの原因についてはわかりませんが、Katana Projectの問題のようです https://katanaproject.codeplex.com/workitem/346

上記のリンクまたは https://katanaproject.codeplex.com/discussions/565294 で回避策を試すことができます

これは私がStartUp.Auth.csでやったことです

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
           OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager, User>(
            validateInterval: TimeSpan.FromMinutes(1),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),

           //**** This what I did ***//
            OnException = context => { }
    }
});
19
Sandeep Kumar

新しいプロジェクトを作成した後、次のアップデートを実行するとうまくいきました。

更新パッケージMicrosoft.Owin

更新パッケージMicrosoft.Owin.Security

更新パッケージMicrosoft.Owin.Security.Cookies

最後のもので十分だったと思う。 Visual Studio 2013(12.0.21005.1)とASP.Net Web ApplicationテンプレートとWeb APIを使用しています。

10
Patrick

「OnException = context => {}」を追加すると、表示されている例外が解決されることに同意しますが、今見た次のエラーは一般的な原因を示唆しているため、この修正の前に試す最初のステップです。

コンテキストによるモデルの裏付けが変更されたことを通知するエラーが発生しました。これは、Add-MigrationおよびUpdate-Databaseを試みると、これに遭遇する他のASP.NET Identityユーザーに対してこれを解決でき、それが失敗した場合は上記の行を追加することを意味します。これは、「データベースに接続できますか?」などの基本的なチェックの一部も示唆しています。このOwin Security例外が表示された場合は、確認する価値もあります。この後続エラーが修正されたら、OnException行を削除しても問題なく、サイトは正常に機能しています。

私もこの問題を抱えており、Cookieをクリアすることで解決しました。

Cookieが無効のようです。

4
BurnOut

はい、同じ問題が発生しました。Azureからデータベースをダウンロードしました。次に、これを使用するようにアプリを変更します。アプリには、Azureバックアップに存在しない新しいフィールドがありました。移行は同期していませんでした。

Update-Database(パッケージ管理で、移行を有効にした状態で)がうまくいきました。

2
brianbruff

この例外がおそらくスローされる理由は、ApplicationDbContextの作成に問題があるためです。

私の場合、移行を追加し、設定しました

        Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());

そして、私はあなたと同じエラーを受け取り始めました。

データベース内のオブジェクトにアクセスしようとすると、DbContextはエラーをスローしました。以前にAspNetUsersが既に存在するため、移行を有効にせずにコードを実行したため、データベースが作成されました。 Identityに必要なテーブルを修正し、EnableMigrationsを実行して初期化子を設定すると、テーブルが既に存在することを示すエラーがスローされました。

あなたの場合、ApplicationDbContextに根本的な問題があると思います。スタートアップの前に、次のことを試してくださいbefore Config.Authメソッドが呼び出されます:

        var ctx = new ApplicationDbContext(...);
        var count = ctx.Users.Count();

カウントを返すか、例外をスローするかどうかを確認します。

2
Michal Ciechan

Package Manager ConsoleのUpdate-Databaseが私を助けてくれました

2
CMS

localhost Cookieをクリアします。 firefoxを使用する場合は、これを参照してください link 。私はまったく同じエラーがあり、この解決策は ここ です。

1
Omid-RH

これらの回答はすべて有用であり、データベースが台無しになっている傾向を示しています。モデルを更新し、データベースを更新していないため、この問題が発生しました。現在、モデルを変更するたびに、サイトをデバッグする前にAdd-MigrationおよびUpdate-Databaseを手動で呼び出していますが、そのステップを忘れていました。

1
Dan Csharpster

SQLデータベースがファイアウォールの背後にあり、変更するたびにローカルIPを追加する必要があるため、同じ問題が発生しました。

それを行うすべての方法については、Microsoftのこのリンクを参照してください。

http://msdn.Microsoft.com/en-us/library/Azure/jj553530.aspx

0
Urik

いくつかの回答を読んだ後、IEの代わりにChromeを使用してクラッシュが発生しなかったため、閉じたChromeアプリ。

0
devMomentum

プロジェクトから移行を削除してみてください

Identity DBのデータベース移行を有効にしたら、私は偶然に出会いました

移行フォルダ全体を削除し、問題を再構築した後に消えた

それはあなたのために働くかもしれません

0
megz

テーブル[AspNetRoles]にロールを追加できませんでした。これで問題は解決しました。

0
Gabriela Macias

私の場合、OWIN Cookieのクリアは機能しました。

0
Leon