10

我是 asp.net 的新手。我正在尝试使用 WebMatrix 创建一个简单的登录和注册网页。但是当我尝试创建帐户时出现以下错误:


The Provider encountered an unknown error.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.Security.MembershipCreateUserException: The Provider encountered an unknown error.

Source Error: 


Line 32:                 db.Execute("INSERT INTO UserData (Email,Name) VALUES (@0,@1)", email, username);
Line 33:                  
Line 34:                 WebSecurity.CreateAccount(email,password);
Line 35:                 Response.Redirect("Homepage.cshtml");
Line 36:             }


Source File: c:\Users\admin\Documents\My Web Sites\Login\Register.cshtml    Line: 34 

Stack Trace: 


[MembershipCreateUserException: The Provider encountered an unknown error.]
   WebMatrix.WebData.SimpleMembershipProvider.CreateAccount(String userName, String password, Boolean requireConfirmationToken) +1312
   WebMatrix.WebData.WebSecurity.CreateAccount(String userName, String password, Boolean requireConfirmationToken) +31
   ASP._Page_Register_cshtml.Execute() in c:\Users\admin\Documents\My Web Sites\Login\Register.cshtml:34
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207
   System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 executors) +68
   System.Web.WebPages.WebPage.ExecutePageHierarchy() +156
   System.Web.WebPages.StartPage.RunPage() +19
   System.Web.WebPages.StartPage.ExecutePageHierarchy() +65
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76
   System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext) +119

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

任何帮助表示赞赏。谢谢。

4

4 回答 4

5

我只是遇到了同样的问题......我正在使用

WebSecurity.CreateAccount(model.UserName, model.Password);

及以上产生的问题..

然后我尝试了:

WebSecurity.CreateAccountAndUser(model.UserName, model.Password);

并发现我缺少用户表 (UserProfile) 的其他必填字段。以下为我工作:

WebSecurity.CreateAccountAndUser(model.UserName, model.Password, new {RequiredColumn1 = Value1, RequiredColumn2 = Value 2, ...... });

帖子很旧,但希望这可以帮助其他人..

于 2013-10-24T10:27:36.080 回答
4

务必:

  1. 首先创建用户记录
  2. 调用 WebMatrix 以创建用户帐户。

以下是我的代码,它解决了您遇到的相同问题:

public ActionResult SignUp(SignUpModel model)
    {
        if (ModelState.IsValid)
        {
            using (MorphometryContext context = new MorphometryContext())
            {
                User user = new User
                {
                    Email = model.Email,
                    FirstName = model.FirstName,
                    LastName = model.LastName,
                    Username = model.UserName
                };
                context.Users.Add(user);
                context.SaveChanges();
            }

            // Attempt to register the user
            try
            {
                WebSecurity.CreateAccount(model.UserName, model.Password);
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                return View();
            }

            WebSecurity.Login(model.UserName, model.Password);
            return RedirectToAction("Index", "Projects");
        }

此外,您不想 Respoonse.Redirect 到 .cshtml 文件。相反,您应该返回一个 RedirectToAction 并传入 Action 和 Controller 名称。

于 2013-02-14T17:54:05.507 回答
0

我刚刚遇到了这个问题-但是根据您的代码,它可能不是一回事。在我自己的用户表中创建记录之前,我试图创建成员记录。它必须反过来。

所以我会检查你的INSERT INTO UserData查询是否真的有效。

于 2013-02-06T11:04:01.637 回答
0

就我而言;这是因为文化;

使用 CreateUserAndAccount 函数创建帐户的 Membership 提供程序,首先创建一个用户。现在没问题,用户成功添加到数据库中。但对于创建帐户,它运行以下查询以获取用户 ID 为其创建新帐户:

SELECT [userID] from [User] Where (UPPER([userName]) = @0);

这是抛出异常的地方,因为在某些文化中,大写字母是不同的,例如在土耳其语中,“i”的大写是“İ”。

我暂时不知道如何解决这个问题,我会尝试学习它。

就我而言,我正在创建一个名为“admin”的用户并抛出异常。我将用户名更改为“mesut”,它运行成功。

请确保您在用户名字段中是否有特定于文化的字母。(或在您的情况下使用电子邮件),(一旦我找到解决方法,我将在此处发布)

于 2014-02-12T10:24:50.780 回答