다음을 통해 공유


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

업데이트: 2007년 11월

이 단원의 항목에는 ASP.NET 프로필 공급자 예제에 대한 코드가 포함되어 있습니다. 예제 공급자에서는 .NET Framework Data Provider for ODBC를 사용하여 ODBC 데이터 소스에 연결합니다. 이 예제에서는 Access 데이터베이스를 데이터 소스로 사용합니다.

이 항목에서는 프로필 공급자 예제에 대한 구현 정보를 제공하고 예제를 빌드하는 방법 및 예제 공급자를 사용하도록 ASP.NET 응용 프로그램을 구성하는 방법을 설명합니다.

참고:

데이터 소스는 다양한 SQL 구문을 지원하므로 데이터 소스에 따라 사용할 수 없는 SQL 명령도 있습니다. 따라서 .NET Framework Data Provider for ODBC 또는 .NET Framework Data Provider for OLEDB를 사용하여 데이터 소스에 액세스하는 경우에도 현재 데이터 소스에 대한 특정 프로필 공급자를 만드는 것이 좋습니다. 예를 들어 SybaseProfileProvider, OracleProfileProvider 등의 개별 공급자를 만들 수 있습니다.

예제 공급자에 대한 코드를 보려면 프로필 공급자 구현 예제를 참조하십시오.

공급자 데이터베이스 만들기

예제 공급자는 Profiles, StockSymbols 및 ProfileData라는 세 가지 데이터베이스 테이블에서 데이터 읽기 및 쓰기를 수행하도록 되어 있습니다. 이 예제 프로필 공급자는 주식 기호 목록과 우편 번호라는 두 가지 프로필 속성을 지원합니다.

각 사용자 프로필은 데이터베이스의 Profiles 테이블에서 고유하게 식별됩니다. 이 테이블에는 응용 프로그램 이름과 마지막 작업 날짜 같은 프로필 정보가 포함되어 있습니다. Profiles 테이블에는 자동으로 증가되는 기본 키가 포함되어 있습니다. 기본 키는 각 행을 고유하게 식별하고 데이터베이스에서 프로필 속성 값이 포함된 다른 테이블과 특정 테이블을 연결하는 데 사용됩니다.

StockSymbols 테이블에는 StockSymbols 속성을 사용하여 저장 및 검색된 주식 기호 목록에 대한 값이 포함되어 있습니다. 사용자 프로필 하나로 여러 개의 주식 기호를 추적할 수 있으므로 StockSymbols 테이블은 Profiles 테이블과 일대다 관계입니다.

ZipCode 속성 값은 ProfileData 테이블에 저장되어 있습니다. ProfileData 테이블은 Profiles 테이블과 일대일 관계입니다.

프로필을 저장할 데이터베이스 테이블을 만들려면

  1. 새 Microsoft Access 데이터베이스를 만들거나 기존 데이터베이스를 엽니다.

    참고:

    웹 응용 프로그램의 파일 폴더에 데이터베이스를 저장하는 경우 응용 프로그램의 App_Data 폴더에 데이터베이스를 저장하는 것이 좋습니다. App_Data 폴더의 내용은 응용 프로그램 코드에서 사용할 수 있지만 웹 요청에 노출되지 않습니다. 또한 ASP.NET 프로세스에는 App_Data 폴더에서 읽고 쓸 수 있는 권한이 있습니다.

  2. Access 또는 Access 데이터베이스에서 테이블을 만들 수 있는 다른 도구에서 다음과 같은 데이터 정의 쿼리를 실행하여 Profiles 테이블을 만듭니다.

    CREATE TABLE Profiles
    (
      UniqueID AutoIncrement NOT NULL PRIMARY KEY,
      Username Text (255) NOT NULL,
      ApplicationName Text (255) NOT NULL,
      IsAnonymous YesNo, 
      LastActivityDate DateTime,
      LastUpdatedDate DateTime,
        CONSTRAINT PKProfiles UNIQUE (Username, ApplicationName)
    )
    
  3. 다음과 같은 데이터 정의 쿼리를 실행하여 StockSymbols 테이블을 만듭니다.

    CREATE TABLE StockSymbols
    (
      UniqueID Integer,
      StockSymbol Text (10),
        CONSTRAINT FKProfiles1 FOREIGN KEY (UniqueID)
          REFERENCES Profiles
    )
    
  4. 다음과 같은 데이터 정의 쿼리를 실행하여 ProfileData 테이블을 만듭니다.

    CREATE TABLE ProfileData
    (
      UniqueID Integer,
      ZipCode Text (10),
        CONSTRAINT FKProfiles2 FOREIGN KEY (UniqueID)
          REFERENCES Profiles
    )
    

이벤트 로그 액세스 제공

예제 공급자는 데이터 소스로 작업하는 동안 예외가 발생할 경우 ASP.NET 응용 프로그램에 예외를 반환하는 대신 Windows 응용 프로그램 이벤트 로그에 예외에 대한 세부 정보를 기록합니다. 이 작업은 ASP.NET 응용 프로그램에서 데이터 소스에 대한 개인 정보가 노출되지 않도록 하기 위해 보안 목적으로 수행됩니다.

예제 공급자에서는 "OdbcProfileProvider"의 이벤트 Source를 지정합니다. ASP.NET 응용 프로그램에서 응용 프로그램 이벤트 로그에 제대로 기록할 수 있으려면 먼저 이벤트 로그에 액세스해야 합니다.

참고:

예제 공급자가 이벤트 로그에 예외를 기록하지 않게 하려면 Web.config 파일의 공급자 구성에서 writeExceptionsToEventLog 특성을 false로 설정하면 됩니다.

이벤트 로그에 액세스하려면

  • Regedit.exe 또는 다른 Windows 레지스트리 편집 도구를 사용하여 다음과 같은 레지스트리 키를 만듭니다.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\OdbcProfileProvider
    

예제 공급자 빌드

예제 공급자를 사용하려면 웹 응용 프로그램에서 코드를 사용할 수 있도록 해야 합니다. 다음과 같은 두 가지 방법을 사용하여 이를 수행할 수 있습니다.

  • 예제 공급자 소스 코드를 응용 프로그램의 App_Code 폴더에 넣습니다. 이런 경우에는 예제 코드를 수동으로 컴파일할 필요가 없습니다.

  • 코드를 컴파일하고 결과 어셈블리를 응용 프로그램의 Bin 폴더에 넣거나 강력한 이름을 지정하여 전역 어셈블리 캐시에 넣습니다.

수동으로 컴파일하지 않고 예제 공급자를 테스트하려면

  1. 응용 프로그램에 App_Code 폴더가 없는 경우 응용 프로그램 루트에 이 폴더를 만듭니다.

  2. 사용할 프로그래밍 언어에 따라 App_Code 폴더에서 OdbcProfileProvider.vb 또는 OdbcProfileProvider.cs 텍스트 파일을 만듭니다.

    참고:

    응용 프로그램의 App_Code 디렉터리에 이미 소스 코드가 있으면 디렉터리의 기존 코드와 동일한 언어로 작성된 예제 공급자 버전을 사용하십시오. ASP.NET 응용 프로그램의 페이지가 처음으로 요청되면 ASP.NET에서 공급자를 컴파일합니다.

  3. 적절한 언어로 작성된 예제 소스 코드를 복사하여 해당하는 텍스트 파일에 붙여넣고 파일을 저장합니다.

예제 공급자를 컴파일하려면

  1. 사용자 지정 컨트롤 및 관련 클래스에 대한 소스 파일을 저장할 폴더를 만듭니다.

  2. 사용할 프로그래밍 언어에 따라 소스 코드 폴더에서 OdbcProfileProvider.vb 또는 OdbcProfileProvider.cs 텍스트 파일을 만듭니다.

    참고:

    예제를 수동으로 컴파일하여 결과 어셈블리를 Bin 폴더에 추가하려면 소스 코드를 App_Code 폴더에 넣지 마십시오. 소스 코드를 이 폴더에 넣으면 ASP.NET이 App_Code 폴더에서 동적으로 생성한 어셈블리와 컴파일된 어셈블리 둘 다에 공급자 형식이 남게 됩니다. 이렇게 되면 공급자를 로드할 때 모호한 참조가 만들어지고 공급자 형식을 참조하는 코드에서 컴파일러 오류가 발생합니다.

  3. 각 샘플의 소스 코드를 복사하여 해당하는 텍스트 파일에 붙여넣고 파일을 저장합니다.

  4. 소스 코드 폴더에서 다음 명령을 실행하여 컨트롤 및 관련 클래스를 어셈블리로 컴파일합니다.

    vbc /out:OdbcProfileProvider.dll /t:library OdbcProfileProvider.vb /r:System.Web.dll /r:System.Configuration.dll
    
    csc /out:OdbcProfileProvider.dll /t:library OdbcProfileProvider.cs /r:System.Web.dll /r:System.Configuration.dll
    

    /t:library 컴파일러 옵션을 사용하면 컴파일러에서 실행 어셈블리 대신 라이브러리를 만듭니다. /out 옵션은 어셈블리에 사용할 이름을 제공하고 /r 옵션은 어셈블리에 링크된 어셈블리를 나열합니다.

    참고:

    컴파일러 명령을 실행할 수 없는 경우에는 해당 명령을 실행하기 전에 PATH 변수에 .NET Framework 설치 경로를 추가해야 합니다. Windows에서 내 컴퓨터를 마우스 오른쪽 단추로 클릭하고 속성, 고급 탭, 환경 변수 단추를 차례로 클릭합니다. 그런 다음 시스템 변수 목록에서 Path 변수를 두 번 클릭합니다. 변수 값 텍스트 상자에서 기존 값의 끝에 세미콜론(;)을 추가한 후 .NET Framework 설치 경로를 입력합니다. 일반적으로 .NET Framework는 Windows 설치 폴더의 \Microsoft.NET\Framework\versionNumber에 설치됩니다.

ASP.NET 응용 프로그램에서 예제 공급자 구성

ASP.NET 웹 응용 프로그램에서 예제 공급자를 사용하려면 공급자를 등록하도록 응용 프로그램을 구성해야 합니다.

예제 구성에서는 웹 사이트가 폼 인증을 사용하도록 설정되어 있고, 사용자가 로그인하여 사용자 ID를 설정하는 데 사용할 수 있는 Login.aspx라는 ASP.NET 페이지를 포함한다고 가정합니다. 또한 이 예제 구성에서는 익명 인증을 지원하므로 사용자가 로그인할 필요가 없습니다.

예제 공급자를 사용하도록 응용 프로그램을 구성하려면

  1. Login.aspx라는 ASP.NET 페이지를 만들고 다음 중 하나를 수행합니다.

    • 이 페이지에 Login 컨트롤을 추가합니다(응용 프로그램이 ASP.NET 멤버 자격을 사용하도록 이미 구성되어 있는 경우).

    • 로그인 폼을 만들고 폼 인증을 사용하여 사용자를 인증합니다. 자세한 내용은 방법: 간단한 폼 인증 구현을 참조하십시오.

      참고:

      4단계에서는 폼 인증에 필요한 구성 요소를 보여 줍니다.

  2. 컴퓨터에 "OdbcProfile"이라는 DSN을 만든 다음, 이전에 만든 Access 데이터베이스에 대한 연결 정보를 포함하도록 구성합니다.

  3. ASP.NET 응용 프로그램에 Web.config라는 텍스트 파일이 없는 경우 응용 프로그램의 루트 폴더에 이 파일을 만듭니다.

  4. Web.config 파일에 다음 요소를 추가합니다.

    <configuration>
      <connectionStrings>
        <add name="OdbcProfile" connectionString="DSN=OdbcProfile;" />
      </connectionStrings>
    
      <system.web>
        <authentication mode="Forms" >
          <forms loginUrl="login.aspx"
            name=".ASPXFORMSAUTH" />
        </authentication>
    
        <anonymousIdentification enabled="true" />
    
        <profile defaultProvider="OdbcProvider">
          <providers>
            <add
              name="OdbcProvider"
              type="Samples.AspNet.Profile.OdbcProfileProvider" 
              connectionStringName="OdbcProfile" /> 
          </providers>
    
          <properties>
            <add name="ZipCode" 
              allowAnonymous="true" />
            <add name="CityAndState" 
              provider="AspNetSqlProfileProvider" 
              allowAnonymous="true" />
            <add name="StockSymbols" 
              type="System.Collections.ArrayList" 
              allowAnonymous="true" />
          </properties>
        </profile>
      </system.web>
    </configuration>
    

참고 항목

개념

프로필 공급자 구현

ASP.NET 프로필 속성 개요

기타 리소스

ASP.NET 마스터 페이지

ASP.NET 테마 및 스킨