1

OAuth を Visual Studio 2012 Web フォーム テンプレートで動作させようとしています。Scott のビデオの指示に従いました。

http://www.asp.net/vnext/overview/videos/oauth-in-the-default-aspnet-45-templates

しかし、ここに投入NullReferenceExceptionOpenAuthProvider.ascx.cs Page_Load()ます:

OpenAuth.RequestAuthentication(provider, redirectUrl);

詳細を掘り下げると、それがスローされていることがわかります DotNetOpenAuth.AspNet.OpenAuthSecurityManager.RequestAuthentication(String returnUrl)

しかし、MVC4 テンプレートから新しくなると、夢のように機能します。

誰かがこれに遭遇しましたか?

編集:これは明らかに私のラップトップの環境の問題であり、代替品を試してみましたが問題はありませんでした。VS2012 Ultimate RC をインストールし、その上に RTM Professional をインストールしたことが原因ではないかと思いますが、クリーンな再インストールでは何も変わりませんでした。

4

4 に答える 4

3

私もこの問題にぶつかり、それを修正する方法について短い投稿を書きました。

短いバージョンはproviderName、テンプレートを介して「Facebook」または「Google」として渡されます。メソッドはまたはAuthenticationClientManager.GetProviderByName()を期待しています。"facebook""google"

http://wasntnate.com/2012/10/openauth-requestuthentication-nullreference-exception-explained/

于 2012-10-20T00:01:49.377 に答える
1

これは、コンストラクターOpenAuthSecurityManagerを介してクラスをインスタンス化する場合OpenAuthSecurityManager(HttpContextBase)、または2番目のパラメーターとして OpenAuthSecurityManager(HttpContextBase, IAuthenticationClient, IOpenAuthDataProvider)渡す場合はコンストラクターをインスタンス化する場合に発生する可能性があるようです。null

于 2012-09-02T22:10:36.000 に答える
0

以下のコードは私のエラーを解決しました..

IEnumerable<ProviderDetails> details = OpenAuth.AuthenticationClients.GetAll();

foreach (var d in details)
{
    if (d.ProviderDisplayName.Equals(provider, StringComparison.OrdinalIgnoreCase))
    {
        provider = d.ProviderName;
        OpenAuth.RequestAuthentication(provider, redirectUrl);
        break;
    }
}
于 2014-04-03T12:19:44.277 に答える