2013-05-03 3 views
0

저는 ASP.NET MVC4 및 SQL Azure를 사용하여 웹 응용 프로그램을 작성하고 있습니다. 양식 인증과 멤버십 라이브러리를 사용합니다. 프로덕션 환경에서는 Azure의 웹 역할 서비스에서 실행됩니다.ASP.NET 회원 - 로그인 실패

내 dev 환경에서 새 사용자를 등록하면 프로덕션 환경에서 로그인하는 데 실패하고 그 반대도 마찬가지입니다. 동일한 사용자 환경에서 작성한 일부 사용자 & 암호로 로그인하십시오. dev와 production의 구성이 다르기는하지만, 두 데이터베이스가 동일한 DB에서 작동하고 두 소스 (dev 및 production)의 사용자 세부 정보가 동일한 테이블 ('users'및 ' '회원 자격').

은 createuser가 명령입니다 :

MembershipUser user = Membership.CreateUser(model.Email, model.Password, model.Email, null, null, true, null, out createStatus); 

그리고 이것은 실패 로그인 명령입니다

if (Membership.ValidateUser(model.Email, model.Password)) 

감사합니다.

답변

1

대부분의 경우 dev 및 생산품에는 다른 MachineKey가 있습니다. MachineKey는 해시 생성에 사용되므로 다른 키는 암호가 작동하지 않는다는 것을 의미합니다.

둘 다 명시 적으로 web.config의 MachineKey를 설정하십시오.

http://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations

+0

나는 당신이 제안한 것처럼 행동했으며 이제는 효과가있다. 많은 감사합니다. –

1

"applicationName"이 구성 파일에서 동일합니까? 로

은 아래와 : applicationName을 = "에서는 MyApplication"

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15"> 
     <providers> 
     <clear /> 
     <add 
      name="SqlProvider" 
      type="System.Web.Security.SqlMembershipProvider" 
      connectionStringName="MySqlConnection" 
      applicationName="MyApplication" 
      enablePasswordRetrieval="false" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="true" 
      requiresUniqueEmail="true" 
      passwordFormat="Hashed" /> 
     </providers> 
    </membership> 

그것에 대해 이동하는 또 다른 방법. 테이블을 쿼리하고 다른 환경을 통과 할 때 ApplicationId가 "일렬로 정렬"되어 있는지 확인하십시오.

select [ApplicationId] , [UserId] , [Email] from [dbo].[aspnet_Membership] where [Email] = '[email protected]' 
+0

덕분에, 응용 프로그램 ID는 문제가 MachineKey과 함께 계셨으니이 같은 두 가지 경우입니다했다. –

+0

좋습니다 ... 다행이에요. 기존의 두 가지 대답이 "가장 일반적인"문제라고 생각합니다. 나는 다른 사람을 상향 투표했다. – granadaCoder