我正在尝试通过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(字符串 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 网站\ VeidiBok \认证\ Register.cshtml:6个
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+ 207 zh System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 执行者)+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
答案 0 :(得分:7)
好的,这个问题对我今天的好处很痛苦。我最终不得不查看Codeplex上的源代码,以便更好地了解正在发生的事情(http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/ae31d2579b9a#src%2fWebMatrix.WebData%2fSimpleMembershipProvider.cs)
似乎CreateAccount
主要在成员资格表中创建帐户信息,但在此之前,该方法将检查在Initialize语句{中指定的用户配置文件表中是否存在具有相同userName的用户{ {1}}
您可以在致电WebSecurity.InitializeDatabaseConnection
方法之前致电CreateUser
或致电便捷方法CreateAccount
。
答案 1 :(得分:0)
解决方案:
您已在DataBase工作流
中创建数据库Veidibok.sdf然后
在Demo根文件夹中创建web.config文件并在connectionString区域中添加以下代码
<connectionStrings>
<add name="Veidibok" connectionString="Data Source=|DataDirectory|\Veidibok.sdf;" />
</connectionStrings>