다음을 통해 공유


3단계 구성: 데이터 원본 설정 구성

키스 뉴먼과 로버트 맥머레이

ASP.NET 웹 사이트 작성 과정의 이 단계에서는 IIS에서 사용 가능한 데이터 원본 설정을 구성합니다.

3.1. 데이터 원본 연결 문자열

이 섹션에서는 IIS 관리자 UI 또는 명령줄을 사용하여 IIS에서 데이터베이스 연결 문자열을 만드는 방법을 설명합니다.

IIS에서 ASP.NET 웹 사이트 계획에서 연결 문자열을 추가해야 하는 필요성에 대해 다음과 같은 디자인 결정을 내렸습니다.

  1. 연결 문자열의 이름 지정.
  2. 데이터베이스가 있는 서버 지정
  3. 데이터베이스의 이름을 지정합니다.
  4. Windows 통합 보안을 사용하는 경우가 아니면 자격 증명 제공

UI를 사용하여 데이터베이스 연결을 만들려면

  1. IIS 관리자를 열고 관리하려는 수준으로 이동합니다.

  2. 기능 보기에서 연결 문자열을 두 번 클릭합니다.

  3. 연결 문자열 페이지에서 작업 창의 추가를 클릭합니다.

  4. 연결 문자열 추가 대화 상자의 이름 텍스트 상자에 연결 문자열의 이름을 MyConnection과 같이 입력합니다.

    참고

    IIS 관리자에 입력하는 이름은 이 연결 문자열을 사용하여 데이터를 검색하기 위해 애플리케이션 코드에서 참조하는 이름과 동일합니다.

  5. SQL Server 옵션을 선택하고 데이터베이스를 호스팅하는 서버의 이름을 서버 텍스트 상자에 입력한 다음 데이터베이스의 이름을 데이터베이스 텍스트 상자에 입력합니다.

  6. 자격 증명에서 다음 중 하나를 선택합니다.

    • Windows NT 통합 보안 사용을 선택합니다.
    • 자격 증명 지정을 선택하고 설정을 클릭합니다. 서버와 데이터베이스에 연결할 수 있는 계정의 사용자 이름과 암호를 사용자 이름암호 텍스트 상자에 입력합니다. 그런 다음 암호 확인 상자에 같은 암호를 입력하고 확인을 클릭합니다.
  7. 확인을 클릭합니다.

명령줄을 사용하여 데이터베이스 연결을 만들려면

데이터베이스 연결 문자열을 만들려면 다음 구문을 사용합니다.

appcmd set config /commit:MACHINE /section:connectionStrings /+"[connectionString='string', name='string', providerName='string']"

변수 connectionString='string' 는 연결 문자열 값이고, 변수 name='string' 는 연결 문자열 값에 액세스하는 데 사용할 키이며, 변수 providerName='string' 는 기본 데이터 저장소에 액세스하는 데 사용할 ADO.NET 공급자의 이름입니다. 예를 들어 Northwind 데이터베이스를 사용하는 응용 프로그램의 연결 문자열을 만들려면 명령 프롬프트에 다음을 입력하고 Enter 키를 누릅니다.

appcmd set config /commit:MACHINE /section:connectionStrings /+"[connectionString='Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;', name='Northwind', providerName='System.Data.SqlClient ']"

3.2. ASP.NET 공급자

이 섹션에서는 IIS 관리자 UI 또는 명령줄을 사용하여 IIS에 .NET 공급자를 추가하는 방법을 설명합니다.

IIS에서 ASP.NET 웹 사이트 계획에서 IIS에 .NET 공급자를 추가하는 방법에 대해 다음과 같은 디자인 결정을 내렸습니다.

  • 공급자가 제공할 IIS 기능(.NET 프로필, .NET 역할 또는 .NET 사용자)을 선택합니다.

  • 공급자 유형 선택

  • 공급자의 이름 입력

  • 기능으로 .NET 사용자를 선택한 경우 다음 중 원하는 공급자 동작 선택

    • 암호 재설정 사용
    • 암호 검색 사용
    • 질문과 대답 필요
    • 고유한 전자 메일 필요
    • 보안 형식으로 암호 저장
  • 데이터베이스에 대한 연결 문자열 이름 제공

  • 응용 프로그램의 이름 입력

UI를 사용하여 공급자를 추가하려면

  1. IIS 관리자를 열고 관리하려는 수준으로 이동합니다.

  2. 기능 보기에서 공급자를 두 번 클릭합니다.

  3. 공급자 페이지의 기능에서 다음 기능 중 하나를 선택합니다.

    • .NET 역할: ASP.NET 역할 관리 서비스("역할 관리자")와 역할 데이터 원본 간에 인터페이스를 제공하도록 공급자를 구성하려는 경우 선택합니다.
    • .NET 사용자: ASP.NET 구성 서비스와 구성원 데이터 원본 간에 인터페이스를 제공하도록 공급자를 구성하려는 경우 선택합니다.
    • .NET 프로필: ASP.NET 프로필 서비스와 프로필 데이터 원본 간에 인터페이스를 제공하도록 공급자를 구성하려는 경우 선택합니다.
  4. 작업 창에서 추가를 클릭합니다.

  5. 공급자 추가 대화 상자의 유형 드롭다운 목록에서 공급자 유형을 선택합니다.

  6. 이름 텍스트 상자에 공급자의 이름을 입력합니다.

  7. 3단계에서 .NET 사용자 기능을 선택한 경우 프로필 속성 섹션의 동작에서 다음 동작 중 하나 이상의 값을 True로 설정하여 해당 동작을 사용하도록 설정합니다.

    • EnablePasswordReset: 공급자 ResetPassword 메서드를 사용하여 암호를 다시 설정할 수 있는지 여부를 나타냅니다. 기본 설정은 False입니다.

    • EnablePasswordRetrieval: 공급자 GetPassword 메서드를 사용하여 암호를 검색할 수 있는지 여부를 나타냅니다. 기본 설정은 False입니다.

      중요

      Active Directory 공급자와 같은 일부 공급자는 암호 검색을 지원하지 않습니다. 이러한 공급자의 경우 enablePasswordRetrieval 특성의 값은 항상 False이며 구성에서 변경할 수 없습니다.

    • RequiresQuestionAndAnswer: 프로그램에서 GetPasswordResetPassword 메서드를 호출할 때 암호 대답이 제공되는지 여부를 나타냅니다. 기본 설정은 False입니다.

    • RequiresUniqueEmail: 등록된 각 사용자에게 고유한 전자 메일 주소가 있어야 하는지 여부를 나타냅니다. 기본 설정은 False입니다.

    • StorePasswordInSecureFormat: 암호가 해시되는지 여부를 나타냅니다. 기본 설정은 False입니다.

  8. 데이터ConnectionStringName 텍스트 상자에 데이터베이스 연결 시 사용되는 연결 문자열의 이름을 입력합니다. (참고: 연결 문자열 기능에서 구성된 것과 동일한 연결 문자열입니다 . 연결 문자열을 구성하는 방법에 대한 자세한 내용은 IIS 7에서 연결 문자열 구성을 참조하세요. 이 절차의 5단계에서 WindowsTokenRoleProvider 를 선택한 경우 연결 문자열 이름은 선택 사항입니다.)

  9. 원하는 경우 프로필 속성 섹션의 일반에서 응용 프로그램의 가상 경로를 ApplicationName 텍스트 상자에 입력합니다. ApplicationName 텍스트 상자에 값을 지정하지 않으면 구성원 API에서는 기본적으로 HttpContext.Current.Request.ApplicationPath를 사용합니다. 이 경로는 런타임에만 확인할 수 있습니다.

  10. 원하는 경우 프로필 속성 섹션의 일반에서 공급자의 설명을 설명 텍스트 상자에 입력합니다.

  11. 확인을 클릭합니다.

명령줄을 사용하여 공급자를 추가하려면

.NET 역할 공급자를 추가하려면 다음 구문을 사용합니다.

appcmd set config /commit:MACHINE /section:roleManager /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string']"

변수 name='string' 는 공급자의 이름입니다. 변수 type='string' 는 공급자 형식입니다. 변수 connectionStringName='string' 는 데이터베이스에 연결하는 데 사용되는 연결 문자열의 이름입니다. 변수 applicationName='string' 는 선택 사항이며 애플리케이션의 가상 경로입니다. 예를 들어 클래스를 사용하여 SqlRoleProvider 역할 정보를 저장하고 검색하도록 ASP.NET 애플리케이션을 구성하려면 명령 프롬프트에 다음을 입력한 다음 Enter 키를 누릅니다.

appcmd set config /commit:MACHINE /section:roleManager /+"providers.[name='SqlProvider', type='System.Web.Security.SqlRoleProvider', connectionStringName='SqlServices', applicationName='SampleApplication']"

.NET 사용자 공급자를 추가하려면 다음 구문을 사용합니다.

appcmd set config /commit:MACHINE /section:membership /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string', enablePasswordReset='true|false', enablePasswordRetrieval='true|false', requiresQuestionAndAnswer='true|false', requiresUniqueEmail='true|false', storePasswordInSecureFormat='true|false']"

이 구문은 다음 항목으로 구성됩니다.

  • 변수 name='string' 는 공급자의 이름입니다.
  • 변수 type='string' 는 공급자 형식입니다.
  • 변수 connectionStringName='string' 는 데이터베이스에 연결하는 데 사용되는 연결 문자열의 이름입니다.
  • 변수 applicationName='string' 는 선택 사항이며 애플리케이션의 가상 경로입니다.
  • 변수 enablePasswordReset=true 는 공급자 ResetPassword 메서드를 사용하여 암호 재설정을 사용하도록 설정합니다. 기본 설정은 false입니다.
  • 변수 enablePasswordRetrieval=true 는 공급자 GetPassword 메서드를 사용하여 암호 검색을 사용하도록 설정합니다. 기본 설정은 false입니다.
  • 변수 requiresQuestionAndAnswer=true 를 사용하려면 프로그램에서 공급자 GetPasswordResetPassword 메서드를 호출할 때 암호 답변을 제공해야 합니다. 기본 설정은 false입니다.
  • 변수 requiresUniqueEmail=true 를 사용하려면 등록된 각 사용자에게 고유한 전자 메일 주소가 있어야 합니다. 기본 설정은 false입니다.
  • 변수 storePasswordInSecureFormat=true 를 사용하려면 모든 암호를 해시해야 합니다. 기본 설정은 false입니다.

예를 들어 클래스를 사용하여 SqlMembershipProvider 사용자 정보를 저장하고 검색하도록 ASP.NET 애플리케이션을 구성하려면 명령 프롬프트에 다음을 입력한 다음 Enter 키를 누릅니다.

appcmd set config /commit:MACHINE /section:membership /+"providers.[name='SqlProvider', type='System.Web.Security.SqlMembershipProvider', connectionStringName='SqlServices', applicationName='/', enablePasswordRetrieval='False', enablePasswordReset='True', requiresQuestionAndAnswer='True']"

.NET 프로필 공급자를 추가하려면 다음 구문을 사용합니다.

appcmd set config /commit:MACHINE /section:profile /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string']"

변수 name='string' 는 공급자의 이름입니다. 변수 type='string' 는 공급자 형식입니다. 변수 connectionStringName='string' 는 데이터베이스에 연결하는 데 사용되는 연결 문자열의 이름입니다. 변수 applicationName='string' 는 선택 사항이며 애플리케이션의 가상 경로입니다. 예를 들어 클래스를 사용하여 SqlProfileProvider 프로필 정보를 저장하고 검색하도록 ASP.NET 애플리케이션을 구성하려면 명령 프롬프트에 다음을 입력한 다음 Enter 키를 누릅니다.

appcmd set config /commit:MACHINE /section:profile /+"providers.[name='SqlProvider', type='System.Web.Profile.SqlProfileProvider', connectionStringName='SqlServices', applicationName='SampleApplication']"

3.3. .NET 프로필

이 섹션에서는 프로필 속성 및 프로필 그룹을 추가하는 방법을 설명합니다.

IIS에서 ASP.NET 웹 사이트 계획에서 IIS에 대한 프로필 속성 및 그룹에 대해 다음과 같은 디자인 결정을 내렸습니다.

  • 각 프로필 속성에 대해 속성 이름, 데이터 형식(예: 문자열, 부울), 기본값, 직렬화 옵션(문자열, XML, 이진 또는 공급자별), 속성이 읽기 전용인지 여부 및 익명 사용자에 대해 속성을 사용할 수 있는지 여부 지정
  • 각 프로필 그룹에 대해 그룹 이름 제공

UI를 사용하여 .NET 프로필 속성을 추가하려면

  1. IIS 관리자를 열고 관리하려는 수준으로 이동합니다.

  2. 기능 보기에서 .NET 프로필을 두 번 클릭합니다.

  3. 작업 창의 속성 추가를 클릭하여 .NET 프로필 속성을 추가하거나, 그룹에 .NET 프로필 속성을 추가하려면 .NET 프로필 속성을 추가할 그룹을 선택하고 속성을 그룹에 추가를 클릭합니다.

  4. .NET 프로필 속성 추가 대화 상자의 이름 텍스트 상자에 .NET 프로필 속성의 이름을 입력합니다.

  5. 데이터 형식에서 다음 데이터 형식 중 하나를 선택합니다.

    • System.Boolean: .NET 프로필 속성의 값을 True 또는 False가 되도록 구성하려면 선택합니다.
    • System.Char: .NET 프로필 속성이 유니코드 문자를 포함하도록 구성하려면 선택합니다.
    • System.DateTime: 9999년 12월 31일 오전 12:00:00 자정, 0001년 1월 1일 자정, A.D. 또는 C.E.(Common Era) ~ 11:59:59 P.M., 9999년 12월 31일(C.E.) 범위의 값이 포함된 날짜 및 시간을 포함하도록 .NET 프로필 속성을 구성하려면
    • System.Decimal: .NET 프로필 속성이 양수 79,228,162,514,264,337,593,543,950,335부터 음수 79,228,162,514,264,337,593,543,950,335 사이의 10진수를 포함하도록 구성하려면 선택합니다. Decimal 값 형식은 큰 적분 및 분수 형식 숫자를 많이 사용해야 하며 반올림 오류가 발생하지 않는 재무 분야의 계산에 적합합니다.
    • System.Double: 음수 1.79769313486232e308에서 양수 1.79769313486232e308까지의 값과 양수 또는 음수 0, PositiveInfinity, NegativeInfinity 및 Not-a-Number(NaN)를 포함하는 배정밀도 64비트 숫자를 포함하도록 .NET 프로필 속성을 구성합니다. Double 값 형식에 대한 자세한 내용은 Double Structure를 참조하세요.
    • System.Int32: .NET 프로필 속성이 음수 2,147,483,648부터 양수 2,147,483,647 범위의 값을 사용하는 부호 있는 정수를 포함하도록 구성하려면 선택합니다.
    • System.Int64: .NET 프로필 속성이 음수 9,223,372,036,854,775,808부터 양수 9,223,372,036,854,775,807 범위의 값을 사용하는 정수를 포함하도록 구성하려면 선택합니다.
    • System.Single: 음수 3.402823e38에서 양수 3.402823e38까지의 값과 긍정 또는 음수 0, PositiveInfinity, NegativeInfinity 및 NaN(Not-a-Number) 값이 포함된 단정밀도 32비트 숫자를 포함하도록 .NET 프로필 속성을 구성합니다. 단일 값 형식에 대한 자세한 내용은 단일 구조를 참조하세요.
    • System.String: .NET 프로필 속성을 텍스트 문자열을 나타내는 Char 구조체의 순차적 컬렉션으로 구성합니다. 이 설정은 기본값입니다.
  6. 기본값 텍스트 상자에 속성을 초기화하는 데 사용할 값을 입력합니다.

  7. 직렬화 옵션에서 다음 직렬화 포맷터 중 하나를 선택합니다.

    • 문자열: 설정 속성이 일반 텍스트로 직렬화될 때 이 옵션을 선택합니다. 이 설정은 기본값입니다.
    • XML: 공용 속성 및 필드만 직렬화하려면 이 옵션을 선택합니다. XML 직렬화에서는 형식 충실도가 유지되지 않습니다. 이 옵션은 데이터를 사용하는 응용 프로그램을 제한하지 않고 해당 데이터를 제공하거나 사용하려는 경우에 유용합니다. XML은 개방형 표준이므로 웹에서 데이터를 공유할 때 선택하면 효율적입니다.
    • 이진: 형식 충실도를 유지하려면 이 옵션을 선택합니다. 이진 직렬화는 각 응용 프로그램 호출 간에 개체 상태를 유지하려는 경우에 유용합니다. 예를 들어, 개체를 클립보드로 serialize하면 여러 애플리케이션 간에 개체를 공유할 수 있습니다. 스트림, 디스크, 메모리, 네트워크 등에 대해 개체를 직렬화할 수 있습니다.
    • 공급자별: 설정 공급자가 속성 또는 해당 형식에 대한 암시적 지식을 가지고 있고 적절한 serialization 메커니즘을 선택할 수 있는 경우 이 옵션을 선택합니다. 이 옵션은 사용자 지정 직렬화에 흔히 사용됩니다.
  8. .NET 프로필 속성을 수정할 수 없도록 구성하려면 읽기 전용 확인란을 선택합니다.

  9. 인증되지 않은 사용자가 .NET 프로필 속성을 사용할 수 있도록 하려면 익명 사용자에 대해 사용 가능 확인란을 선택합니다.

  10. 확인을 클릭합니다.

명령줄을 사용하여 .NET 프로필 속성을 추가하려면

.NET 프로필 속성을 추가하려면 다음 구문을 사용합니다.

appcmd set config /commit:MACHINE /section:profile /+"properties.[name='string', type='string', defaultValue='string', serializeAs='String|Xml|Binary|ProviderSpecific', readOnly='true|false', allowAnonymous='true|false']"

변수 name='string' 는 프로필 속성의 이름입니다. 변수 type='string' 는 데이터 형식입니다. 변수 defaultValue='string' 는 프로필 속성이 초기화되는 값입니다. 변수 serializeAs='String|Xml|Binary|ProviderSpecific' 는 serialization 포맷터를 설정합니다. 변수 readOnly=true 는 .NET 프로필 속성을 수정할 수 없도록 구성합니다. 기본값은 false입니다. 변수 allowAnonymous=true 를 사용하면 인증되지 않은 사용자가 .NET 프로필 속성을 사용할 수 있습니다. 기본값은 false입니다. 예를 들어 최신 검색 목록 컬렉션을 포함하는 프로필 속성을 지정하려면 명령 프롬프트에 다음을 입력하고 Enter 키를 누릅니다.

appcmd set config /commit:MACHINE /section:profile /+"properties. [name='RecentSearchList', type='System.Collections.Specialized.StringCollection', serializeAs='Xml', allowAnonymous='true']"

UI를 사용하여 .NET 프로필 그룹을 추가하려면

  1. IIS 관리자를 열고 관리하려는 수준으로 이동합니다.
  2. 기능 보기에서 .NET 프로필을 두 번 클릭합니다.
  3. 작업 창에서 그룹 추가를 클릭합니다.
  4. 그룹 추가 대화 상자의 이름 텍스트 상자에 .NET 프로필 그룹의 이름을 입력하고 확인을 클릭합니다.

3.4. .NET 역할

이 섹션에서는 IIS 관리자 UI를 사용하여 .NET 역할을 추가하는 방법을 설명합니다.

UI를 사용하여 .NET 역할을 추가하려면

  1. IIS 관리자를 열고 관리하려는 수준으로 이동합니다.
  2. 기능 보기에서 .NET 역할을 두 번 클릭합니다.
  3. 작업 창에서 추가를 클릭합니다.
  4. .NET 역할 추가 대화 상자의 이름 텍스트 상자에 역할의 이름을 입력하고 확인을 클릭합니다.

3.5. .NET 사용자

이 섹션에서는 IIS 관리자 UI를 사용하여 .NET 사용자를 구성하는 방법을 설명합니다.

IIS에서 ASP.NET 웹 사이트 계획에서 IIS에 추가하려는 각 사용자에 대해 다음과 같은 디자인 결정을 내렸습니다.

  • 사용자 이름
  • 전자 메일
  • 암호
  • 질문
  • Answer
  • 하나 이상의 역할

UI를 사용하여 .NET 사용자를 추가하려면

  1. IIS 관리자를 열고 관리하려는 수준으로 이동합니다.

  2. 기능 보기에서 .NET 사용자를 두 번 클릭합니다.

  3. 작업 창에서 추가를 클릭합니다.

  4. .NET 사용자 계정 정보 대화 상자에서 다음 정보를 입력합니다.

    • 사용자 이름(고유해야 함)
    • 전자 메일(표준 형식: name@domain.com)을 사용해야 합니다.
    • 암호(강력한 암호여야함)
    • 암호 확인(암호와 일치해야 함)
    • 질문(사용자 지정 질문을 입력하거나 목록에서 선택)
    • 질문에 대한 대답
  5. 다음을 클릭하여 이 사용자에 대한 역할을 선택합니다. .NET 역할을 사용하도록 설정하지 않은 경우 마침을 클릭합니다.

  6. 원하는 경우 .NET 사용자 역할 대화 상자의 역할 상자에서 사용 가능한 역할을 선택하고 마침을 클릭합니다.