ASP.NET 응용 프로그램의 동작은 다음 두 구성 파일의 서로 다른 설정에 따라 결정됩니다.
기계.구성
웹.구성
machine.config 파일에는 지원되는 모든 설정에 대한 기본값과 컴퓨터별 값이 포함되어 있습니다. 시스템 관리자가 시스템을 설정하므로 응용 프로그램은 일반적으로 이 파일에 액세스할 수 없습니다.
그러나 애플리케이션은 해당 루트 폴더에 web.config 파일을 생성하여 기본값을 재정의할 수 있습니다. web.config 파일은 machine.config 파일의 하위 집합입니다.
응용 프로그램에 하위 디렉터리가 포함된 경우 각 폴더에 대해 web.config 파일을 정의할 수 있습니다. 각 프로필의 범위는 계층적 하향식 방식으로 결정됩니다.
모든 web.config 파일은 위에 정의된 모든 설정을 로컬에서 확장, 제한 또는 재정의할 수 있습니다.
Visual Studio는 각 프로젝트에 대한 기본 web.config 파일을 생성합니다. web.config 파일 없이 애플리케이션을 실행할 수 있지만 web.config 파일 없이는 애플리케이션을 디버그할 수 없습니다.
다음 이미지는 웹 서비스 자습서에 사용된 솔루션 탐색기의 샘플 예를 보여줍니다.
이 애플리케이션에는 웹 서비스에 해당하는 두 개의 web.config 파일과 웹 서비스를 호출하는 웹 사이트가 있습니다.
web.config 파일의 구성 요소는 루트 노드 역할을 합니다. 이 요소의 정보는 구성 섹션 핸들러 선언 영역과 구성 섹션 설정 영역이라는 두 가지 주요 영역으로 나뉩니다.
다음 코드 조각은 구성 파일의 기본 구문을 보여줍니다.
<configuration> <!-- 구성 섹션 핸들러 선언 영역 --> <configSections> <section name="section1" type="section1Handler" /> <section name="section2" type="section2Handler" /> </ configSections> <!-- 구성 섹션 설정 영역 --> <section1> <s1Setting1 attribute1="attr1" /> </section1> <section2> <s2Setting1 attribute1="attr1" /> </section2> <system.web> <authentication mode="Windows" /> </system.web> </configuration>
구성 섹션 핸들러 선언은 태그에 포함되어 있으며 각 구성 핸들러는 구성 섹션의 이름을 지정하며 일부 구성 데이터를 제공하는 파일에 포함되어 있습니다. 다음과 같은 기본 구문이 있습니다.
<configSections> <section /> <sectionGroup /> <remove /> <clear/> </configSections>
여기에는 다음과 같은 요소가 있습니다.
지우기 - 상속된 섹션 및 섹션 그룹에 대한 모든 참조입니다.
제거 - 상속된 참조 섹션 및 섹션 그룹을 제거합니다.
섹션 - 구성 섹션 핸들러와 구성 요소 간의 연관을 정의합니다.
섹션 그룹 - 구성 섹션 처리기와 구성 섹션 간의 연결을 정의합니다.
애플리케이션 설정을 사용하면 읽기 전용 액세스 권한이 있는 애플리케이션에 대한 이름-값 쌍을 저장할 수 있습니다. 예를 들어 다음과 같이 사용자 정의 애플리케이션 설정을 정의할 수 있습니다.
<configuration> <appSettings> <add key="애플리케이션 이름" value="MyApplication" /> </appSettings> </configuration>
예를 들어, 책의 ISBN 번호와 이름 데이터 쌍을 저장할 수도 있습니다.
<configuration> <appSettings> <add key="appISBN" value="0-273-68726-3" /> <add key="appBook" value="Corporate Finance" /> </appSettings> </configuration>
연결 문자열은 웹사이트에 사용할 수 있는 데이터베이스 연결 문자열을 보여줍니다. 예를 들어:
<connectionStrings> <이름 추가="ASPDotNetStepByStepConnectionString" ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; 데이터 소스=E:\projectsdatacaching / datacachingApp_DataASPDotNetStepByStep.mdb" 공급자Name="System.Data. OleDb" /> <이름 추가="booksConnectionString" ConnectionString="공급자=Microsoft.Jet.OLEDB.4.0; 데이터 소스=C: databindApp_Databooks.mdb" 공급자 이름="System.Data.OleDb" /> </connectionStrings>
system.web 요소는 ASP.NET 구성 섹션의 루트 요소를 지정하며 ASP.NET 웹 응용 프로그램을 구성하고 응용 프로그램의 작업을 제어하는 구성 요소를 포함합니다.
조정이 필요한 대부분의 일반적인 구성 요소를 제어합니다. 이 요소의 기본 구문은 다음과 같습니다.
<system.web> <anonymousIdentification> <authentication> <authorization> <browserCaps> <caching> <clientTarget> <compilation> <customErrors> <deployment> <deviceFilters> <globalization> <healthMonitoring> <hostingEnvironment> <httpCookies> <httpHandlers> <http모듈> <httpRuntime> <ID> <머신키> <membership> <mobileControls> <pages> <processModel> <profile> <roleManager> <securityPolicy> <sessionPageState> <sessionState> <siteMap> <trace> <trust> <urlMappings> <webControls> <webParts> <webServices> <xhtmlConformance > </system.web>
다음 표에서는 일반적으로 사용되는 일부 system.web 요소의 하위 요소에 대한 간략한 설명을 제공합니다.
사용자 신원 확인이 필요한 경우, 인증되지 않은 사용자를 식별하기 위해 사용됩니다.
구성 인증에 의해 지원됩니다. 기본 구문은 다음과 같습니다.
<인증> <허용 .../> <거부 .../> </인증>
캐시 설정을 구성합니다. 기본 구문은 다음과 같습니다.
<caching> <cache>...</cache> <outputCache>...</outputCache> <outputCacheSettings>...</outputCacheSettings> <sqlCacheDependency>...</sqlCacheDependency> </caching>
사용자 정의 오류 메시지를 정의합니다. 기본 구문은 다음과 같습니다.
<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly"> <error.
배포에 사용되는 구성 설정을 정의합니다. 기본 구문은 다음과 같습니다.
<배포 소매="true|false" />
호스팅 환경에 대한 구성 설정을 정의합니다. 기본 구문은 다음과 같습니다.
<hostingEnvironment 유휴 시간 초과="HH:MM:SS" ShadowCopyBinAssemblies="true|false" shutdownTimeout="번호" urlMetadataSlidingExpiration="HH:MM:SS" />
애플리케이션에 대한 인증 메커니즘을 구성하는 데 사용됩니다. 기본 구문은 다음과 같습니다.
<identity impersonate="true|false" userName="도메인사용자 이름" 비밀번호="<보안 비밀번호>"/>
데이터를 암호화하고 해독하기 위해 양식 인증 쿠키에 사용되는 키를 구성하는 데 사용됩니다.
또한 보기 상태 데이터 및 양식 인증 티켓에 대한 메시지 인증 확인을 수행하기 위해 인증 키를 구성할 수 있습니다. 기본 구문은 다음과 같습니다.
<machineKey ValidationKey="AutoGenerate,IsolateApps" [String] 유효성 검사="HMACSHA256" [SHA1 | MD5 | HMACSHA256 | HMACSHA384] decryption="자동 " [자동 | DES | 3DES | AES | alg:알고리즘_이름] />
관리를 구성하고 사용자 매개변수를 인증하는 데 사용됩니다. 기본 구문은 다음과 같습니다.
<membership defaultProvider="provider name" userIsOnlineTimeWindow="분수" hashAlgorithmType="SHA1"> <providers>...</providers> </membership>
웹 페이지의 특정 구성을 제공합니다. 기본 구문은 다음과 같습니다.
<pages asyncTimeout="number" autoEventWireup="[True|False]" buffer="[True|False]" clientIDMode="[AutoID|Predictable|Static]"compileMode="[Always|Auto|Never]" controlRenderingCompatibilityVersion=" [3.5|4.0]" 활성화EventValidation="[True|False]" 활성화SessionState="[True|False|ReadOnly]" 활성화ViewState="[True|False]" 활성화ViewStateMac="[True|False]"maintainScrollPositionOnPostBack="[True|False]" masterPageFile="파일 경로" maxPageStateFieldLength="숫자" pageBaseType ="유형 이름, 어셈블리" pageParserFilterType="string" smartNavigation="[True|False]" styleSheetTheme="string" theme="string" userControlBaseType="typename" verifyRequest="[True|False]" viewStateEncryptionMode="[Always|Auto|Never]" > <controls>.. .</controls> <namespaces>...</namespaces> <tagMapping>...</tagMapping> <ignoreDeviceFilters>...</ignoreDeviceFilters> </pages>
사용자 프로필 매개변수를 구성하는 데 사용됩니다. 기본 구문은 다음과 같습니다.
<profileenabled="true|false" 상속="정규화된 유형 참조" automaticSaveEnabled="true|false" defaultProvider="공급자 이름"> <속성>...</속성> <공급자>...</providers > </프로필>
사용자 역할에 대한 설정 정보를 구성합니다. 기본 구문은 다음과 같습니다.
<roleManager 캐시RolesInCookie="true|false" cookieName="이름" cookiePath="/" cookieProtection="All|Encryption|Validation|None" cookieRequireSSL="true|false " cookieSlidingExpiration="true|false " cookieTimeout="분 수 " createPersistantCookie="true|false" defaultProvider="공급자 이름" domain="쿠키 도메인"> 활성화="true|false" maxCachedResults="캐시된 역할 이름의 최대 수" <providers>...</providers> </roleManager>
보안 정책을 구성하는 데 사용됩니다. 기본 구문은 다음과 같습니다.
<securityPolicy> <trustLevel /> </securityPolicy>
원본 URL을 숨기고 보다 사용자 친화적인 URL을 제공하기 위한 매핑을 정의합니다. 기본 구문은 다음과 같습니다.
<urlMappings 활성화="true|false"> <추가.../> <clear /> <remove.../> </urlMappings>
클라이언트 스크립트의 공유 위치 이름을 제공합니다. 기본 구문은 다음과 같습니다.
<webControls clientScriptsLocation="String" />
웹 서비스를 구성하는 데 사용됩니다.