C#

[C#] ASP.NET 4.0 λ ˆκ±°μ‹œ μ½”λ“œ web.config 파일 뢄석

hyonie 2024. 12. 30. 12:12
ASP.NET 4.0 μ½”λ“œλ₯Ό 처음 μ ‘ν–ˆμ„λ•Œ λŠλ‚€ μƒμ†Œν•¨κ³Ό 이λ₯Ό ν•˜λ‚˜μ”© μ΄ν•΄ν•˜λ©° ν’€μ–΄κ°€λŠ” 과정을 기둝으둜 λ‚¨κΈ°κ³ μž ν•©λ‹ˆλ‹€.
ν”„λ‘œμ νŠΈ 뢄석을 ν•˜λ©΄μ„œ κ°€μž₯ λ¨Όμ € λ§ˆμ£Όν•œ κ³Όμ œλŠ” web.config νŒŒμΌμ΄μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έ μ€‘μš”μ„±μ— λŒ€ν•΄μ„œλŠ” 읡히 λ“€μ–΄μ™”μ§€λ§Œ, μ‹€μ œλ‘œ 처음 νŒŒμΌμ„ μ‚΄νŽ΄λ΄€μ„ λ•ŒλŠ” 각 μ„€μ • ν•­λͺ©μ΄ 무엇을 μ˜λ―Έν•˜κ³ , μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ νŒŒμ•…ν•˜λŠ” 데 생각보닀 λ§Žμ€ μ‹œκ°„μ΄ ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. 
μ„€μ • 파일 ν•˜λ‚˜λ₯Ό μ΄ν•΄ν•˜λŠ” 데 μ‹œκ°„μ„ μŸλŠ” 것이 λΉ„νš¨μœ¨μ μœΌλ‘œ 보일 μˆ˜λ„ μžˆμ§€λ§Œ, μ‹€μ œλ‘œλŠ” 이 μž‘μ—…μ΄ 이후 λ¦¬νŒ©ν† λ§μ΄λ‚˜ 버전 μ—…κ·Έλ ˆμ΄λ“œ μž‘μ—…μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 전체적인 ꡬ쑰와 λ™μž‘ 방식을 μ΄ν•΄ν•˜λŠ” 데 μ€‘μš”ν•œ μ΄ˆμ„μ΄ λœλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
이 κΈ€μ—μ„œλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 싀행에 ν•„μš”ν•œ μ—¬λŸ¬ ꡬ성 μš”μ†Œμ™€ ν™˜κ²½ 섀정을 μ •μ˜ν•˜λŠ” web.config 파일의 ꡬ쑰와 역할에 λŒ€ν•΄ μƒμ„Ένžˆ 정리해 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 


ASP.NET μ„€μ • 파일의 μ£Όμš” ꡬ성 μš”μ†Œμ™€ νŠΉμ§•

  1. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° 정보와 λ„€νŠΈμ›Œν¬ 경둜 섀정이 포함
  2. λŒ€μš©λŸ‰ μš”μ²­κ³Ό κΈ΄ μ„Έμ…˜ μœ μ§€λ₯Ό μœ„ν•œ μ„€μ •
  3. λ³΄μ•ˆ μ„€μ •μœΌλ‘œ μ„œλ²„ 헀더 정보λ₯Ό μ œκ±°ν•˜κ³  μš”μ²­ 크기 μ œν•œμ„ μ„€μ •
  4. μ—λŸ¬ 처리 μ‹œ μ‚¬μš©μž μ •μ˜ νŽ˜μ΄μ§€λ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈλ˜λ©°, 디버그 μ‹œ λ‘œμ»¬μ—μ„œλ§Œ 상세 정보 확인이 κ°€λŠ₯
  5. κΈ€λ‘œλ²Œ μ„€μ •μœΌλ‘œ UTF-8 인코딩 및 νŠΉμ • 컨트둀/λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό ν™œμš©ν•˜λ„λ‘ μ„€μ •

 


1. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° μ„€μ • (<connectionStrings>) 

<connectionStrings> μ„Ήμ…˜μ€ ASP.NET μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ™€ ν†΅μ‹ ν•˜κΈ° μœ„ν•œ μ—°κ²° 정보λ₯Ό μ •μ˜ν•˜λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.

이 μ„Ήμ…˜μ€ λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ™€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°„μ˜ μ—°κ²° 섀정을 쀑앙 μ§‘μ€‘ν™”ν•˜μ—¬ κ΄€λ¦¬ν•˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€ 접근을 효율적이고 μ•ˆμ •ν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

μ½”λ“œ ꡬ쑰 및 μ„€λͺ…: 

<connectionStrings>
    <add 
        name="DBConnectionString" 
        connectionString="Data Source=10.1.1.100;Initial Catalog=HyonieDB2;Persist Security Info=True;User ID=HyonieDB2;Password=abcd1234" 
        providerName="System.Data.SqlClient" />
</connectionStrings>

 

속성 μ„€λͺ… μ˜ˆμ‹œ κ°’
name  μ—°κ²° λ¬Έμžμ—΄μ˜ μ΄λ¦„μœΌλ‘œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œμ—μ„œ μ°Έμ‘° DBConnectionString
connectionString λ°μ΄ν„°λ² μ΄μŠ€ 연결에 ν•„μš”ν•œ 정보λ₯Ό ν¬ν•¨ν•œ λ¬Έμžμ—΄ μ•„λž˜ ꡬ성 μš”μ†Œ μ°Έμ‘°
Data Source λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ˜ IP μ£Όμ†Œ λ˜λŠ” 이름 μ—¬κΈ°μ„œλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„κ°€ 10.1.1.100 IP μ£Όμ†Œμ— μœ„μΉ˜
Initial Catalog μ—°κ²°ν•  데이터 베이슀의 이름 HyonieDB2 
Persist Security Info 연결을 μœ μ§€ν•˜λŠ” λ™μ•ˆ 인증 정보λ₯Ό μ €μž₯ν• μ§€ μ—¬λΆ€λ₯Ό μ„€μ •. True 둜 μ„€μ •ν•˜λ©΄ 연결을 μœ μ§€ν•˜λŠ” λ™μ•ˆ λ³΄μ•ˆ 정보λ₯Ό μœ μ§€
User ID λ°μ΄ν„°λ² μ΄μŠ€ 접속에 μ‚¬μš©ν•  μ‚¬μš©μž 계정. HyonieDB2
Password  μ‚¬μš©μž κ³„μ •μ˜ λΉ„λ°€λ²ˆν˜Έ abcd1234
providerName - 연결에 μ‚¬μš©ν•  데이터 제곡자(Data Provider)λ₯Ό μ •μ˜
- μ—¬κΈ°μ„œλŠ” SQL Server와 ν†΅μ‹ ν•˜λŠ” .NET 제곡자인 System.Data.SqlClientλ₯Ό μ‚¬μš©.
System.Data.SqlClient

 

 


 

2. μ›Ή μ„€μ •(<system.web>)

 

μ•„λž˜λŠ” 일반적인 μ„€μ • ν•­λͺ©κ³Ό κ·Έ 역할에 λŒ€ν•œ μ„€λͺ…μž…λ‹ˆλ‹€.

ν•­λͺ© μ„€λͺ… μ˜ˆμ‹œ κ°’
httpRuntime - executionTimeout:
μš”μ²­ μ‹€ν–‰ μ΅œλŒ€ μ‹œκ°„(초 λ‹¨μœ„) μ„€μ •
- maxRequestLength:
μš”μ²­ 크기 μ œν•œ
3600초 = 1μ‹œκ°„,
1048576 KB = μ•½ 1 GB
roleManager λ‘€(Role) 기반 인증을 ν™œμ„± enabled="true"
sessionState μ„Έμ…˜ μœ μ§€ μ‹œκ°„(λΆ„ λ‹¨μœ„) μ„€μ • 20000λΆ„ = μ•½ 13.9일
trace νŽ˜μ΄μ§€ 좜λ ₯ 좔적 μ„€μ • pageOutput="true",
enabled="false"
globalization μš”μ²­ 및 μ‘λ‹΅μ˜ 문자 인코딩 μ„€μ • UTF-8
compilation μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‚¬μš©ν•˜λŠ” .NET Framework버전 μ§€μ •  4.0
pages - controlRenderingCompatibilityVersion: νŽ˜μ΄μ§€ λ Œλ”λ§ ν˜Έν™˜μ„± μ„€μ •
- clientIDMode: μ„œλ²„ 컨트둀 ID μžλ™ 생성
- enableViewStateMac: ViewState 검증 μ„€μ •
3.5,
AutoID,
true/ false
  - controls: μΆ”κ°€ 컨트둀 μ„€μ • (예: AJAX 도ꡬ)
- namespaces: μ‚¬μš©μž μ •μ˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€ μΆ”κ°€
 AjaxControlToolkit ,
ExtensionMethods
customErrors μ‚¬μš©μžμ˜ μ •μ˜ 였λ₯˜ νŽ˜μ΄μ§€ μ„€μ • Error.html 

 

 

 

 


 

3. μ›Ή μ„œλ²„ μ„€μ • (<system.webServer>)

 

<system.webServer> μ„Ήμ…˜μ€ μ›Ή μ„œλ²„μ—μ„œμ˜ μš”μ²­ μ²˜λ¦¬μ™€ κ΄€λ ¨λœ 섀정을 μ •μ˜ν•˜λ©°, λ³΄μ•ˆ 및 μ„±λŠ₯ μ΅œμ ν™”μ— μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

μ•„λž˜λŠ” μ£Όμš” μ„€μ • ν•­λͺ©κ³Ό κ·Έ μ—­ν•©μž…λ‹ˆλ‹€:

ν•­λͺ© μ„€λͺ… μ˜ˆμ‹œ κ°’
requestFiltering maxAllowedContentLength:
μš”μ²­ ν—ˆμš© 크기λ₯Ό λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ μ„€μ •ν•˜μ—¬ μ—…λ‘œλ“œ μ œν•œμ„ 관리.
μ•½ 200MB (204857600)
httpErrors - 둜컬 ν™˜κ²½μ—μ„œλ§Œ μƒμ„Έν•œ 였λ₯˜ 정보λ₯Ό 제곡
(DetailedLocalOnly).
DetailedLocalOnly
modules - λͺ¨λ“  μš”μ²­μ— λŒ€ν•΄ 관리 λͺ¨λ“ˆ μ‹€ν–‰ ν™œμ„±ν™”
(runAllManagedModulesForAllRequests="true").
true
  - SecurityHttpModule: νŠΉμ • 헀더λ₯Ό μ œκ±°ν•˜μ—¬ λ³΄μ•ˆμ„ κ°•ν™”ν•˜λŠ” μ‚¬μš©μž μ •μ˜ λͺ¨λ“ˆ μΆ”κ°€.  
httpProtocol  - customHeaders: μ„œλ²„ μ‘λ‹΅μ—μ„œ λΆˆν•„μš”ν•œ 정보λ₯Ό μ œκ±°ν•˜μ—¬ λ³΄μ•ˆμ„ κ°•ν™”. X-Powered-By 제거

 

μ£Όμš” μ„€μ • μš”μ•½

  1. requestFiltering: ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ˜ 크기λ₯Ό μ œν•œν•¨μœΌλ‘œμ¨, λΉ„μ •μƒμ μœΌλ‘œ 큰 μš”μ²­μœΌλ‘œλΆ€ν„° μ„œλ²„λ₯Ό λ³΄ν˜Έν•©λ‹ˆλ‹€.
  2. httpErrors: 둜컬 κ°œλ°œν™˜κ²½μ—μ„œλŠ” μƒμ„Έν•œ 였λ₯˜ 정보λ₯Ό μ œκ³΅ν•˜μ§€λ§Œ, 운영 ν™˜κ²½μ—μ„œλŠ” λ‹¨μˆœ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜μ—¬ λ―Όκ°ν•œ 정보λ₯Ό μˆ¨κΉλ‹ˆλ‹€.
  3. modules: λͺ¨λ“  μš”μ²­μ— λŒ€ν•΄ μ§€μ •λœ λͺ¨λ“ˆμ„ μ‹€ν–‰ν•˜λ©°, λ³΄μ•ˆ κ°•ν™”λ₯Ό μœ„ν•΄ λΆˆν•„μš”ν•œ HTTP 헀더λ₯Ό μ œκ±°ν•˜λŠ” μ‚¬μš©μž μ •μ˜ λͺ¨λ“ˆμ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
  4. httpProtocol: μ„œλ²„ 응닡 ν—€λ”μ—μ„œ X-Powered-By와 같은 정보 λ…ΈμΆœμ„ μ œκ±°ν•˜μ—¬ μ„œλ²„μ˜ 기술 μŠ€νƒμ„ 감μΆ₯λ‹ˆλ‹€.

 


 

4. μ•± μ„€μ • (<appSettings>)

 

<appSettings> μ„Ήμ…˜μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ „μ—­μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ„€μ • 값을 μ •μ˜ν•˜λŠ” κ³΅κ°„μž…λ‹ˆλ‹€. 이 μ„Ήμ…˜μ€ 주둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ성에 ν•„μš”ν•œ κ²½λ‘œλ‚˜ ν™˜κ²½ 정보λ₯Ό κ΄€λ¦¬ν•˜λ©°, μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ λ„ 섀정을 μ‰½κ²Œ λ³€κ²½ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

<appSettings>
    <add key="hyonie_Image_Path" value="@\\<ServrAddress>\path\to\images" />
</appSettings>

 

속성 μ„€λͺ… μ˜ˆμ‹œ κ°’
key hyonie_Image_Path λΌλŠ” μ„€μ • 킀에 이미지 μ €μž₯ κ²½λ‘œκ°€ ν• λ‹Ή hyonie_Image_Path
value μ„€μ • 킀에 ν• λ‹Ήλœ κ°’μœΌλ‘œ, λ„€νŠΈμ›Œν¬ κ²½λ‘œλ‚˜ 기타 데이터λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ 경둜(@)μ‚¬μš©
<ServrAddress>\path\to\images

 

 

 

이와 같이 web.config νŒŒμΌμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 핡심 섀정을 μ€‘μ•™μ—μ„œ κ΄€λ¦¬ν•˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ 정보가 λ³€κ²½λ˜λ”λΌλ„, web.config 파일만 μˆ˜μ •ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 전체에 λ³€κ²½ 사항이 λ°˜μ˜λ©λ‹ˆλ‹€.