다음을 통해 공유


프로필 공급자 구현

업데이트: 2007년 11월

ASP.NET 프로필 기능을 사용하면 다양한 공급자를 손쉽게 사용할 수 있습니다. .NET Framework에 포함되어 있는 SqlProfileProvider 클래스를 사용하거나 공급자를 직접 구현할 수 있습니다.

다음과 같은 경우 사용자 지정 프로필 공급자를 만듭니다.

  • .NET Framework에 포함된 프로필 공급자에서 지원하지 않는 데이터 소스(예: FoxPro 데이터베이스 또는 Oracle 데이터베이스)에 프로필 정보를 저장해야 하는 경우

  • .NET Framework에 포함된 공급자에서 사용하는 데이터베이스 스키마와 다른 데이터베이스 스키마를 사용하여 프로필 정보를 관리해야 하는 경우. 일반적으로 프로필 정보를 기존 SQL Server 데이터베이스의 사용자 데이터와 통합하려는 경우를 예로 들 수 있습니다.

필수 클래스

프로필 공급자를 구현하려면 System.Web.Profile.ProfileProvider 추상 클래스를 상속하는 클래스를 만듭니다. 그러면 ProfileProvider 추상 클래스는 System.Configuration.Provider.ProviderBase 추상 클래스를 상속하는 System.Configuration.SettingsProvider 추상 클래스를 상속합니다. 이러한 상속 체인 때문에 ProfileProvider 클래스의 필수 멤버뿐만 아니라 SettingsProviderProviderBase 클래스의 필수 멤버도 구현해야 합니다.

다음 표에서는 ProviderBase, SettingsProviderProfileProvider 추상 클래스에서 구현해야 하는 속성과 메서드에 대해 설명합니다. 각 멤버에 대한 구현을 검토하려면 방법: 프로필 공급자 예제 빌드 및 실행을 참조하십시오.

ProviderBase 멤버

멤버

설명

Initialize 메서드

구성 설정의 NameValueCollection과 공급자 인스턴스의 이름을 입력으로 사용합니다. 컴퓨터 구성 파일 또는 Web.config 파일에 지정된 특정 구현 값과 옵션을 포함하여 공급자 인스턴스에 대한 옵션과 속성 값을 설정하는 데 사용됩니다.

SettingsProvider 멤버

멤버

설명

ApplicationName 속성

각 프로필에 저장되는 응용 프로그램 이름입니다. 프로필 공급자는 응용 프로그램 이름을 사용하여 각 응용 프로그램에 대해 별도로 프로필 정보를 저장합니다. 이렇게 하면 서로 다른 응용 프로그램에서 같은 사용자 이름을 만든 경우 충돌하지 않고 여러 ASP.NET 응용 프로그램에서 같은 데이터 소스를 사용할 수 있습니다. 또는 여러 ASP.NET 응용 프로그램에서 같은 응용 프로그램 이름을 지정하여 프로필 데이터 소스를 공유할 수도 있습니다.

GetPropertyValues 메서드

SettingsContextSettingsPropertyCollection 개체를 입력으로 사용합니다.

SettingsContext는 사용자에 대한 정보를 제공합니다. 이 정보를 기본 키로 사용하여 사용자에 대한 프로필 속성 정보를 검색할 수 있습니다. 사용자 이름 및 해당 사용자가 인증되었는지 여부(인증됨 또는 익명)를 가져오려면 SettingsContext 개체를 사용합니다.

SettingsPropertyCollection에는 SettingsProperty 개체의 컬렉션이 포함됩니다. 각 SettingsProperty 개체는 속성의 기본값과 읽기 전용 여부 같은 추가 정보 및 속성의 이름과 형식을 제공합니다. GetPropertyValues 메서드는 입력으로 제공된 SettingsProperty 개체를 기반으로 하는 SettingsPropertyValue 개체로 SettingsPropertyValueCollection을 채웁니다. 지정된 사용자에 대한 데이터 소스의 값이 각 SettingsPropertyValue 개체의 PropertyValue 속성에 할당되고 전체 컬렉션이 반환됩니다.

또한 이 메서드를 호출하면 지정된 사용자 프로필의 LastActivityDate 값이 현재 날짜 및 시간으로 업데이트됩니다.

SetPropertyValues 메서드

SettingsContextSettingsPropertyValueCollection 개체를 입력으로 사용합니다.

SettingsContext는 사용자에 대한 정보를 제공합니다. 이 정보를 기본 키로 사용하여 사용자에 대한 프로필 속성 정보를 검색할 수 있습니다. 사용자 이름 및 해당 사용자가 인증되었는지 여부(인증됨 또는 익명)를 가져오려면 SettingsContext 개체를 사용합니다.

SettingsPropertyValueCollection에는 SettingsPropertyValue 개체의 컬렉션이 포함됩니다. 각 SettingsPropertyValue 개체는 속성의 기본값과 읽기 전용 여부 같은 추가 정보 및 속성의 이름, 형식, 값 등을 제공합니다. SetPropertyValues 메서드는 데이터 소스에서 지정된 사용자에 대한 프로필 속성 값을 업데이트합니다.

또한 이 메서드를 호출하면 지정된 사용자 프로필의 LastActivityDateLastUpdatedDate 값이 현재 날짜 및 시간으로 업데이트됩니다.

ProfileProvider 멤버

멤버

설명

DeleteProfiles 메서드

사용자 이름의 문자열 배열을 입력으로 사용하고, 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 지정된 이름에 대한 모든 프로필 정보 및 속성 값을 데이터 소스에서 삭제합니다.

데이터 소스에서 트랜잭션을 지원할 경우에는 모든 삭제 작업을 트랜잭션에 포함하고 삭제 작업이 실패하면 트랜잭션을 롤백한 후 예외를 throw하는 것이 좋습니다.

DeleteProfiles 메서드

ProfileInfo 개체의 컬렉션을 입력으로 사용하고, 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 각 프로필에 대한 모든 프로필 정보 및 속성 값을 데이터 소스에서 삭제합니다.

데이터 소스에서 트랜잭션을 지원할 경우에는 모든 삭제 작업을 트랜잭션에 포함하고 삭제 작업이 실패하면 트랜잭션을 롤백한 후 예외를 throw하는 것이 좋습니다.

DeleteInactiveProfiles 메서드

ProfileAuthenticationOption 값과 DateTime 개체를 입력으로 사용하고, 마지막 작업 날짜가 지정된 날짜/시간보다 이전이거나 같은 경우 그리고 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 모든 프로필 정보 및 속성 값을 데이터 소스에서 삭제합니다. ProfileAuthenticationOption 매개 변수는 익명 프로필만 삭제할지, 인증된 프로필만 삭제할지 아니면 모든 프로필을 삭제할지를 지정합니다.

데이터 소스에서 트랜잭션을 지원할 경우에는 모든 삭제 작업을 트랜잭션에 포함하고 삭제 작업이 실패하면 트랜잭션을 롤백한 후 예외를 throw하는 것이 좋습니다.

GetAllProfiles 메서드

ProfileAuthenticationOption 값, 페이지 인덱스를 지정하는 정수, 페이지 크기를 지정하는 정수, 총 프로필 수로 설정될 정수에 대한 참조 등을 입력으로 사용합니다. 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 데이터 소스의 모든 프로필에 대한 ProfileInfo 개체를 포함하는 ProfileInfoCollection을 반환합니다. ProfileAuthenticationOption 매개 변수는 익명 프로필만 반환할지, 인증된 프로필만 반환할지 아니면 모든 프로필을 반환할지를 지정합니다.

GetAllProfiles 메서드에서 반환된 결과는 페이지 인덱스 및 페이지 크기 값의 제약을 받습니다. 페이지 크기 값은 ProfileInfoCollection에서 반환할 최대 ProfileInfo 개체 수를 지정합니다. 페이지 인덱스 값은 반환할 결과의 페이지를 지정합니다. 여기서 1은 첫 번째 페이지를 나타냅니다. 총 레코드 수에 대한 매개 변수는 총 프로필 수로 설정되는 out 매개 변수(Visual Basic에서는 ByRef 사용 가능)입니다. 예를 들어, 데이터 저장소에 응용 프로그램에 대한 프로필이 13개 포함되어 있고 페이지 인덱스 값이 6, 페이지 크기가 5인 경우 반환된 ProfileInfoCollection에는 6번째~10번째 프로필이 포함됩니다. 이 메서드가 반환되면 총 레코드 수 값이 13으로 설정됩니다.

GetAllInactiveProfiles 메서드

ProfileAuthenticationOption 값, DateTime 개체, 페이지 인덱스를 지정하는 정수, 페이지 크기를 지정하는 정수, 총 프로필 수로 설정될 정수에 대한 참조 등을 입력으로 사용합니다. 마지막 작업 날짜가 지정된 DateTime보다 이전이거나 같은 경우 그리고 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 데이터 소스의 모든 프로필에 대한 ProfileInfo 개체를 포함하는 ProfileInfoCollection을 반환합니다. ProfileAuthenticationOption 매개 변수는 익명 프로필만 반환할지, 인증된 프로필만 반환할지 아니면 모든 프로필을 반환할지를 지정합니다.

GetAllInactiveProfiles 메서드에서 반환된 결과는 페이지 인덱스 및 페이지 크기 값의 제약을 받습니다. 페이지 크기 값은 ProfileInfoCollection에서 반환할 최대 ProfileInfo 개체 수를 지정합니다. 페이지 인덱스 값은 반환할 결과의 페이지를 지정합니다. 여기서 1은 첫 번째 페이지를 나타냅니다. 총 레코드 수에 대한 매개 변수는 총 프로필 수로 설정되는 out 매개 변수(Visual Basic에서는 ByRef 사용 가능)입니다. 예를 들어 데이터 저장소에 응용 프로그램에 대한 프로필이 13개 포함되어 있고 페이지 인덱스 값이 2, 페이지 크기가 5인 경우 반환된 ProfileInfoCollection에는 6번째~10번째 프로필이 포함됩니다. 이 메서드가 반환되면 총 레코드 수 값이 13으로 설정됩니다.

FindProfilesByUserName 메서드

ProfileAuthenticationOption 값, 사용자 이름을 포함하는 문자열, 페이지 인덱스를 지정하는 정수, 페이지 크기를 지정하는 정수, 총 프로필 수로 설정될 정수에 대한 참조 등을 입력으로 사용합니다. 사용자 이름이 지정된 사용자 이름과 일치하는 경우 그리고 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 데이터 소스의 모든 프로필에 대한 ProfileInfo 개체를 포함하는 ProfileInfoCollection을 반환합니다. ProfileAuthenticationOption 매개 변수는 익명 프로필만 반환할지, 인증된 프로필만 반환할지 아니면 모든 프로필을 반환할지를 지정합니다.

데이터 소스에서 와일드카드 문자와 같은 추가 검색 기능을 지원할 경우에는 좀 더 광범위한 사용자 이름 검색 기능을 제공할 수 있습니다.

FindProfilesByUserName 메서드에서 반환된 결과는 페이지 인덱스 및 페이지 크기 값의 제약을 받습니다. 페이지 크기 값은 ProfileInfoCollection에서 반환할 최대 ProfileInfo 개체 수를 지정합니다. 페이지 인덱스 값은 반환할 결과의 페이지를 지정합니다. 여기서 1은 첫 번째 페이지를 나타냅니다. 총 레코드 수에 대한 매개 변수는 총 프로필 수로 설정되는 out 매개 변수(Visual Basic에서는 ByRef 사용 가능)입니다. 예를 들어 데이터 저장소에 응용 프로그램에 대한 프로필이 13개 포함되어 있고 페이지 인덱스 값이 2, 페이지 크기가 5인 경우 반환된 ProfileInfoCollection에는 6번째~10번째 프로필이 포함됩니다. 이 메서드가 반환되면 총 레코드 수 값이 13으로 설정됩니다.

FindInactiveProfilesByUserName 메서드

ProfileAuthenticationOption 값, 사용자 이름을 포함하는 문자열, DateTime 개체, 페이지 인덱스를 지정하는 정수, 페이지 크기를 지정하는 정수, 총 프로필 수로 설정될 정수에 대한 참조 등을 입력으로 사용합니다. 사용자 이름이 지정된 사용자 이름과 일치하는 경우, 마지막 작업 날짜가 지정된 DateTime보다 이전이거나 같은 경우 그리고 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 데이터 소스의 모든 프로필에 대한 ProfileInfo 개체를 포함하는 ProfileInfoCollection을 반환합니다. ProfileAuthenticationOption 매개 변수는 익명 프로필만 반환할지, 인증된 프로필만 반환할지 아니면 모든 프로필을 반환할지를 지정합니다.

데이터 소스에서 와일드카드 문자와 같은 추가 검색 기능을 지원할 경우에는 좀 더 광범위한 사용자 이름 검색 기능을 제공할 수 있습니다.

FindInactiveProfilesByUserName 메서드에서 반환된 결과는 페이지 인덱스 및 페이지 크기 값의 제약을 받습니다. 페이지 크기 값은 ProfileInfoCollection에서 반환할 최대 ProfileInfo 개체 수를 지정합니다. 페이지 인덱스 값은 반환할 결과의 페이지를 지정합니다. 여기서 1은 첫 번째 페이지를 나타냅니다. 총 레코드 수에 대한 매개 변수는 총 프로필 수로 설정되는 out 매개 변수(Visual Basic에서는 ByRef 사용 가능)입니다. 예를 들어 데이터 저장소에 응용 프로그램에 대한 프로필이 13개 포함되어 있고 페이지 인덱스 값이 2, 페이지 크기가 5인 경우 반환된 ProfileInfoCollection에는 6번째~10번째 프로필이 포함됩니다. 이 메서드가 반환되면 총 레코드 수 값이 13으로 설정됩니다.

GetNumberOfInactiveProfiles 메서드

ProfileAuthenticationOption 값과 DateTime 개체를 입력으로 사용하고, 마지막 작업 날짜가 지정된 DateTime보다 이전이거나 같은 경우 그리고 응용 프로그램 이름이 ApplicationName 속성 값과 일치하는 경우 데이터 소스의 총 프로필 수를 반환합니다. ProfileAuthenticationOption 매개 변수는 익명 프로필 개수만 계산할지, 인증된 프로필 개수만 계산할지 아니면 모든 프로필 개수를 계산할지를 지정합니다.

ApplicationName

프로필 공급자는 프로필 정보를 각 응용 프로그램에 대해 별도로 저장하므로 데이터 스키마에 응용 프로그램 이름이 포함되어야 하고 쿼리와 업데이트에도 응용 프로그램 이름이 포함되어야 합니다. 예를 들어 다음 명령은 프로필이 익명인지 여부와 사용자 이름에 따라 데이터베이스에서 속성 값을 검색하는 데 사용되며 ApplicationName 값이 쿼리에 포함되어 있는지 확인합니다.

SELECT Property FROM PropertyTable 
  WHERE Username = 'user1' AND IsAnonymous = False 
  AND ApplicationName = 'MyApplication'

참고 항목

작업

방법: 프로필 공급자 예제 빌드 및 실행

개념

ASP.NET 프로필 속성 개요

ASP.NET 프로필 공급자