0

WebSecurityクラスを介して認証しようとしています。

私はフォームを持っています、そしてユーザーがこれを提出するときこれは呼ばれます:

@{
    if(IsPost) {
        var username = Request["username"];
        var password = Request["password"];

        WebSecurity.CreateAccount(username, password, false);

        WebSecurity.Login(username, password);

        Response.Redirect("Default.cshtml");
    }

}  

私はすでに電話します:

WebSecurity.InitializeDatabaseConnection("Veidibok", "UserProfile", "UserId", "Email", true);

私の_appStart.cshtmlファイルにあります。

呼び出しからこのエラーが発生しCreateAccount()ます:

[MembershipCreateUserException:プロバイダーで不明なエラーが発生しました。]
WebMatrix.WebData.SimpleMembershipProvider.CreateAccount(String userName、String password、Boolean requireConfirmationToken)+1312
WebMatrix.WebData.WebSecurity.CreateAccount(String userName、String password、Boolean requireConfirmationToken)+31
ASP ._Page_Authentication_Register_cshtml.Execute()in c:\ Users \ Notandi \ Documents \ My Web Sites \ VeidiBok \ Authentication \ Register.cshtml:6
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207
System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 executors)+68 System.Web.WebPages.WebPage.ExecutePageHierarchy()+156 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter writer、WebPageRenderingBase startPage)+ 76
System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext)+119

それで、誰かが何かアイデアを持っていますか?WebMatrixと.cshtmlを試してみるだけで、これは本当に新しいです。

4

2 に答える 2

7

さて、この問題は今日の大部分で私のお尻の痛みでした. 最終的に、何が起こっているのかをよりよく理解するために、Codeplex のソース コードをチェックアウトする必要がありました ( http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/ae31d2579b9a#src%2fWebMatrix.WebData%2fSimpleMembershipProvider.cs ) 。

CreateAccount主にメンバーシップ テーブルにアカウント情報を作成するようですが、その前にメソッドは Initialize ステートメントで指定されたユーザー プロファイル テーブルに同じ userName を持つユーザーが存在するかどうかを確認します。WebSecurity.InitializeDatabaseConnection

CreateUserメソッドを呼び出す前に を呼び出すCreateAccountか、便利なメソッドを呼び出すことができますCreateUserAndAccount

于 2012-12-03T06:09:32.463 に答える
0

解決:

データベースワークフローにデータベースVeidibok.sdfを作成しました

それで

デモルートフォルダでweb.configファイルを作成し、connectionString領域に次のコードを追加します

<connectionStrings>
        <add name="Veidibok" connectionString="Data Source=|DataDirectory|\Veidibok.sdf;" />
    </connectionStrings>
于 2012-06-05T09:02:29.880 に答える