vb.net 見つかり UseExternalSignInCookieはOwin.IAppBuilderのメンバーではありません



名前空間または型 からインポートされた が不適切です。 (1)

私は2つのVS 2013 MVC 5 SPA Webプロジェクトを持っています。 両方とも新しく作成され、変更されていません(つまり、まだバニラテンプレートです)。 そのうちの1つは動作し、1つは動作しません。 私が見ることのできる唯一の違いは、VS 2010からVS 2012、そして2013年にアップグレードされたプロジェクトで作成されたもので、このソリューションの約60〜70のプロジェクトの1つです。 もう1つは、MVCアプリケーションを唯一のプロジェクトとして新しく作成したソリューションです。

それ自身のソリューションの新鮮なMVCアプリケーションは問題なく動作しますが、アップグレードされたプロジェクトに追加されたMVCアプリケーションは、次のコンパイル時エラーを返します。

'UseExternalSignInCookie' is not a member of 'Owin.IAppBuilder'. ...\Mvc5UI\App_Start\Startup.Auth.vb
'UseOAuthBearerTokens' is not a member of 'Owin.IAppBuilder'. ...\Mvc5UI\App_Start\Startup.Auth.vb
'GetExternalAuthenticationTypes' is not a member of 'Microsoft.Owin.Security.IAuthenticationManager'. ...\Mvc5UI\Controllers\AccountController.vb

問題のコード(Startup.Auth.vb):

Public Sub ConfigureAuth(app As IAppBuilder)
     '...
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie)
    app.UseOAuthBearerTokens(OAuthOptions)
    '...
End Sub

と(AccountController.vb)

Public Function GetExternalLogins(returnUrl As String, Optional generateState As Boolean = False) As IEnumerable(Of ExternalLoginViewModel)
    Dim descriptions As IEnumerable(Of AuthenticationDescription) = Authentication.GetExternalAuthenticationTypes()
    '...
End Sub

このコードは、アップグレードされたソリューションと新しく構築されたソリューションの両方で同じです。そのため、何か環境が続いています。 私はNuGetパッケージが正しくセットアップされていることを確認しました。 最も興味深いのは、 IAppBuilderのアセンブリメタデータをIAppBuilderと、参照されているメソッドが表示されないため、エラーがIAppBuilderということです。 しかし、それから問題は、新しく作成されたMVCアプリケーションではなぜ機能するのでしょうか?


私が質問を書いていたとき、私は答えを決定することができました。 UseOAuthBearerTokensメソッドとUseOAuthBearerTokensメソッドは実際にはIAppBuilder上の拡張メソッドです。そのため私は混乱していました。 これらの拡張メソッドはMicrosoft.Owin.Security.Cookiesにあり、正しく参照されていないようです。

それを把握してプロジェクトの参照を進めていたときに、Microsoft.AspNet.Identity.Owinアセンブリの参照が壊れていたことに気づいたので、そのパッケージをupdate-Package -reinstall Microsoft.AspNet.Identity.Owinで再インストールしupdate-Package -reinstall Microsoft.AspNet.Identity.Owinパッケージマネージャコマンドを実行するとすべてが動作し始めました。

なぜこれが最初から壊れていたのかまだ分かりませんが、今はうまくいきます。





owin