.net WebPages中的简单身份验证

时间:2012-05-23 01:46:18

标签: .net authentication razor webmatrix

我正在尝试通过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

2 个答案:

答案 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>