2011-07-10 10 views
2
この Hanselman blog post commentで説明するように、私は新しいASP.NETユニバーサル・プロバイダを使用してい

エラーは、ユーザー作成時 - ASP.NET System.Web.Providersを

私はそれが次を使用して認証するように有線取得することができます。

<profile defaultProvider="DefaultProfileProvider" > 
    <providers> 
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider1" connectionStringName="DefaultConnection" applicationName="/"/> 
    </providers> 
</profile> 
<membership defaultProvider="DefaultMembershipProvider"> 
    <providers> 
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="DefaultConnection"    enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"    maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"    applicationName="/" /> 
    </providers> 
</membership> 
<roleManager defaultProvider="DefaultRoleProvider"> 
    <providers> 
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" connectionStringName="DefaultConnection" applicationName="/" /> 
    </providers> 
</roleManager> 

私は、次のコード

を使用して、新しいユーザーを試してみて、作成
object akey = System.Guid.NewGuid(); 
MembershipCreateStatus status; 
var member = new System.Web.Providers.DefaultMembershipProvider();    
member.CreateUser("New User", "password","[email protected]","First Pet","Rover",true,akey,out status) 

私はこのスタックトレースとエラーが表示されます。System.Web.Providers.Entities.ModelHelper.CreateEntityConnectionでオブジェクト のインスタンスに設定されていない

オブジェクト参照(ConnectionStringSettingsは、文字列のCSDLを設定し、文字列のSSDL、文字列MSL)System.Web.Providers.Entities.ModelHelper.CreateMembershipEntities(ConnectionStringSettings設定で )System.Web.Providers.DefaultMembershipProvider.Membership_CreateUser(文字列のapplicationName、文字列のuserNameで 、文字列のパスワード、文字列の塩、文字列の電子メール、 String passwordQuestion、String passwordAnswer、Boolean isApproved、DateTime(String username、String password、String passwordQuestion、String passwordAnswer、Boolean isApproved、Object providerUserKey、MembershipCreateStatus & status)このページの内容は、予告なしに変更される場合がありますので、あらかじめご了承ください。

私は、認証が正常に動作するようにデータベース接続を確立している必要があることを確認します。 私は何が間違っていますか?

memberのApplicationプロパティがNullに設定されていることに気がつきました。それが設定からそれを読んでいるなら、これが "/"であると思ったでしょうか?たぶんそれは設定を読んでいないでしょう。

config.Add("connectionStringName", "DefaultConnection"); 

      member.Initialize("DefaultMembershipProvider",config); 

しかし、私はそれは、構成ファイルからそれを拾う必要があると思っただろう:

はちょうど私が次を追加した場合、それが動作することを発見しました。

+0

良いスポット。しかし、ちょうど設定でTrueに設定しようとしたが、まだ動作しません。 –

+0

memberのApplicationプロパティがまだNullに設定されていることに気づいた –

+0

有効な文字列にスラッシュで(指定された入力として)十分かどうかわかりません。あなたは言葉でそれをしましたか? –

答えて

2

web.configのApplicationServicesの接続文字列を確認してください。

+0

System.Web ConnectionStringsの値を意味しますか?これは認証のために動作している接続文字列であるため、okと思われます。 –

+0

これを追加すると、ちょうどそれが見つかりました config.Add( "connectionStringName"、 "DefaultConnection"); これは機能します。 –

0

あなたがした間違いは、DefaultMembershipProviderの新しいインスタンスを作成したことです。

var member = new System.Web.Providers.DefaultMembershipProvider(); 
member.CreateUser("New User", "password", "[email protected]", "First Pet", "Rover", true, akey, out status) 

この新しいインスタンスは、web.configで指定した構成から読み取られません。そのため、この新しいインスタンスを初期化し、インスタンスに構成を提供する必要がありました。

代わりに静的クラスのメソッドを直接以下のように呼び出す必要があります。

Membership.CreateUser("New User", "password", "[email protected]", "First Pet", "Rover", true, akey, out status); 

設定は自動的にweb.configから読み込まれます。

関連する問題