2012-05-23 257 views
0

我正在嘗試通過WebSecurity類進行身份驗證。.net WebPages中的簡單身份驗證

我有一種形式,當用戶提交這個叫做:

@{ 
    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(字符串 username,字符串password,布爾requireConfirmationToken )+1312
WebMatrix.WebData.WebSecurity.CreateAccount(String userName,String password,Boolean requireConfirmationToken)+31
ASP._Page_Authentication_Register_csht ml.Execute()在 C:\用戶\ Notandi \ Documents \我的Web 網站\ VeidiBok \認證\ Register.cshtml:6
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+207
的System.Web .WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 執行人)68 System.Web.WebPages.WebPage.ExecutePageHierarchy() 156 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext中,TextWriter的作家,WebPageRenderingBase起始頁)+ 76
System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext)+119

所以任何人有任何想法?我在此真的很新鮮,你可以嘗試的WebMatrix和.cshtml

回答

7

好的,這個問題在我今天更好的一部分中很痛苦。我最終不得不退房Codeplex上的源代碼來獲得所發生的事情(http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/ae31d2579b9a#src%2fWebMatrix.WebData%2fSimpleMembershipProvider.cs

更好的主意

看來,CreateAccount主要會在成員表中的賬戶信息,但它確實在此之前,該方法將檢查與在初始化語句WebSecurity.InitializeDatabaseConnection

指定的用戶資料表相同的用戶名用戶的存在,您可以撥打CreateUser調用CreateAccount方法或致電簡便方法CreateUserAndAccount之前。

+0

哇 - 我認爲這應該是'SimpleMembershipProvider' –

0

解決方案:

你有數據庫工作流程中創建數據庫Veidibok.sdf

然後

在演示根文件夾中創建網絡.config文件並在連接字符串區域中添加以下代碼

<connectionStrings> 
     <add name="Veidibok" connectionString="Data Source=|DataDirectory|\Veidibok.sdf;" /> 
    </connectionStrings>