2013-01-18 1 views
8

Я новичок в asp.net. Я пытаюсь создать простую регистрацию и зарегистрировать веб-страницу с помощью WebMatrix. Но я получаю следующее сообщение об ошибке при попытке создать учетную запись:Ошибка связи «Провайдер столкнулся с неизвестной ошибкой» при попытке WebSecurity.CreateAccount на веб-странице asp.net


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 

Любая помощь приветствуется. Благодарю.

+0

Может быть, проблема в ваш метод InitializeDatabaseConnection. Не могли бы вы опубликовать его? – GmG

ответ

4

Обязательно:

  1. Создать запись пользователя первого
  2. Invoke 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.

0

У меня была эта проблема, но по вашему коду это может быть не то же самое. Я пытался создать запись членства перед созданием записи в моей собственной таблице пользователей. Это должно быть наоборот.

Так что я бы проверял, что ваш запрос INSERT INTO UserData действительно работал.

4

Я просто была такая же проблема ... Я использую

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

и выше генерируемой вопрос ..

я попытался:

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

и узнать, что я был отсутствуют другие обязательные поля моей таблицы Users (UserProfile). Вслед работал для меня:

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

Пост старый, но надеюсь, что это может помочь другим ..

0

В моем случае; Это было из-за Культуры;

Поставщик членства для создания учетной записи с помощью функции CreateUserAndAccount, сначала создайте пользователя. теперь это нормально, и пользователь успешно добавлен в базу данных. Но для создания учетной записи, он работает под запрос, чтобы получить идентификатор пользователя, чтобы создать новую учетную запись для него:

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

Вот где исключение брошено, потому что в какой-то культуры верхней обоймы буквы отличается, например, турецкий, то верхний регистр для «i» - «İ».

Я не знаю, как решить эту проблему на этот момент, и я попытаюсь ее изучить.

В моем случае я создавал пользователя с именем «admin» и throw throw. Я меняю имя пользователя на «mesut» И он работает успешно.

пожалуйста, убедитесь, что если у вас есть культура специфические буквы в поле имени пользователя. (Или по электронной почте в вашем случае), (как только я нашел, как решить эту проблему, я отправлю его здесь)

Смежные вопросы