2009-03-22 3 views
2

"asp.net 멤버 자격 공급자"는 이식 가능합니까? 모든 새 컴퓨터에 대해 aspnet_regsql.exe를 설정해야합니까?다른 개발 컴퓨터의 ASP.NET 멤버 자격 공급자

Visual Studio Database Edition에 멤버 자격 공급자 데이터베이스를 가져 와서 내 소스 컨트롤을 검사하고 다른 개발자 컴퓨터에 다시 배포했습니다. 새 컴퓨터에서 다음 오류가 발생했습니다. 이 문제를 어떻게 해결할 수 있습니까? 감사!

'System.Web.Security.SqlMembershipProvider' 스키마 버전 호환 데이터베이스 스키마를 필요로 '1'. 그러나 현재 데이터베이스 스키마는 이이 버전과 호환되지 않습니다. 은 호환 가능한 스키마를 aspnet_regsql.exe (프레임 워크 설치 디렉토리에서 사용 가능)으로 설치하거나 공급자 을 최신 버전으로 업그레이드해야합니다.

답변

3

새 개발 환경에서 Framework 2.0 이상을 사용하고 스키마가 포함 된 DB에 액세스하는 한 "휴대용"입니다.

aspnet_regsql.exe 응용 프로그램은 db 스키마를 생성하기위한 것입니다. 실제 거래는 공급자를 지정할 때 web.config에서 발생합니다.

연결 문자열이나 멤버 자격 공급자 스키마가 들어있는 DB에 .mdf 파일 참조가 있으면 모든 작업이 정상적으로 수행됩니다.

연결 문자열 :

<connectionStrings> 
     <add name="LocalSQL" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=YourCatalog;Persist Security Info=True;User=sa;Password=password" providerName="System.Data.SqlClient"/>   
    </connectionStrings> 

멤버 자격 공급자 :

<membership defaultProvider="DefaultProvider" userIsOnlineTimeWindow="30"> 
      <providers> 
       <clear/> 
       <add name="DefaultProvider" connectionStringName="LocalSQL" applicationName="DefaultApp" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Encrypted" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      </providers> 
     </membership> 
0

은 SQL 멤버 자격 공급자는 모든 데이터베이스에 필요합니다. 공급자 등록 프로세스는 데이터베이스 내에 특정 테이블을 만듭니다. 테이블이 없으면 위의 오류가 발생합니다.

테이블이 데이터베이스에서 작성 되었기 때문에 단일 SQL 데이터베이스를 공유 할 수있는 응용 프로그램이나 개발 컴퓨터를 여러 개 가질 수 있습니다.

다른 공급자 인스턴스를 원한다면 다른 응용 프로그램이 있거나 다른 SQL 데이터베이스와 대화해야하기 때문에 다시 등록 (테이블 만들기)해야합니다. 또 다른 가능성은 SQL 복제를 사용하여 한 데이터베이스에서 다른 데이터베이스로 테이블을 복사하는 것입니다.

응용 프로그램이 기존 SQL 데이터베이스에 올바른 연결 문자열을 포함하도록 web.config 파일을 수정해야하는 경우가 있습니다.

0

이 문제도 발생했습니다. 나를 위해, 나는 명시 적으로 내 응용 프로그램에 이름을 부여해야했습니다 ("/"dev에 내 컴퓨터에).

의 Web.config :

<membership> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlMembershipProvider" applicationName="jobs"... /> 
    </providers> 
</membership> 
<profile> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlProfileProvider" applicationName="jobs" ... /> 
    </providers> 
</profile> 
<roleManager enabled="true"> 
    <providers> 
    <clear /> 
    <add connectionStringName="ApplicationServices" applicationName="jobs" ... /> 
    <add applicationName="jobs" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 

그리고 내 데이터베이스에서 :

INSERT INTO [dbo].[aspnet_Applications]([ApplicationName], [LoweredApplicationName], [ApplicationId], [Description]) SELECT N'jobs', N'jobs', N'74b045ce-9c16-4e6a-b1ec-08504600a627', NULL 
관련 문제