2012-05-23 1 views
0

WebSecurity 클래스를 통해 인증을 시도하고 있습니다..net 웹 페이지의 단순 인증

나는 양식을 가지고 있고 사용자가 제출 때 호출된다 :

@{ 
    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 (문자열 이름, 문자열 암호, 부울 requireConfirmationToken을) +1312
WebMatrix.WebData.WebSecurity.CreateAccount (String userName, String password, Boolean requireConfirmationToken) +31
ASP._Page_Authentication_Register_csht C에서 ml.Execute() : \ 사용자 \ Notandi 문서 내 웹 사이트 \ 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은 주로 회원 정보 테이블에 계정 정보를 생성하는 것으로 보이지만 그 전에는 메소드가 당신이 CreateAccount 메서드를 호출하거나 편리한 메소드 CreateUserAndAccount를 호출하기 전에 초기화 문 WebSecurity.InitializeDatabaseConnection

에 지정된 사용자 프로파일 테이블에서 동일한 사용자 이름을 가진 사용자의 존재는 당신은 CreateUser를 호출 할 수 있습니다.

+0

와우 - 이건 'SimpleMembershipProvider'라고 생각했습니다. –

0

솔루션 :

당신은

그런

데모에서 루트 폴더 웹을 만들 데이터베이스 워크 플로우에 데이터베이스 Veidibok.sdf을 만들 수 있습니다 .config 파일을 만들고 connectionString 영역에 다음 코드를 추가하십시오.

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