2003/11/26

ASP.NET 버젼에 따른 IIS 해당 웹사이트 .NET Framework 버전 지정

서버에 최초 설치되는 .NET Framework 의 버젼에 따라서, IIS에서도 ASP.NET을 설치된 프레임웍의 버젼에 따라 실행되게 됩니다.

Windows 2000 의 경우 다운로드 받아 설치한 버젼이며, Windows Server 2003의 경우 Defalut로 1.1 버젼이 설치되게 됩니다.

Asp.net 웹사이트 프로그래밍시, 작업 컴퓨터의 프레임웍버젼과 실제 서버에서 운영되는 프레임웍간 버젼차이로 에러 또는 기능상 문제가 될수 있습니다.

예로, 작업컴퓨터에서는 1.1로 작업했는데, 서버에는 1.0이 설치된 경우이겠죠.

그런데, 중요한 것은 웹서버에 사이트가 여러개인경우 특정 사이트에만 특정버젼의 .NET Framework 을 지정하게 해야 하는 경우입니다.


■ 이런경우 다음과 같은 방법으로 지정하면 됩니다.

1. 해당 웹사이트의 사이트 인덱스를 확인.
--> Windows Server 2003의 경우 쉽게 확인이 가능하지만, IIS5에서는 확인이 쉽지가 않다. 다음 Vbscript 코드로 쉽게 확인을 할수가 있습니다.

Dim objWWW,
colSites Set objWWW = GetObject("IIS://serverinfo/W3SVC") 
For Each 
colSites in objWWW If IsNumeric(colSites.Name) 
Then 
Wscript.Echo "Site index:" & colSites.Name & _ " Site Name:" & colSites.ServerComment 
End If 
Next


출력결과 :
Site index:1 Site Name:기본 웹 사이트
Site index:2 Site Name:Microsoft SharePoint 관리
Site index:397007713 Site Name:www.serverinfo.pe.kr
Site index:738020274 Site Name:whois.serverinfo.pe.kr


2. 사이트인덱스 확인후, 해당 .NET Framework 을 지정.
-설치된 프레임웍은 WindowsDirectory\Microsoft.NET\Framework\ 폴더밑에서 확인.

ASP.NET 1.0을 재귀적으로 설치할 경우
aspnet_regiis -s W3SVC/1/ROOT/AspVerApp1

또는
ASP.NET 1.0을 비재귀적으로 설치할 경우
aspnet_regiis -sn W3SVC/1/ROOT/AspVerApp1

위 명령어를 실행할경우, 기존에 IIS에 설정된 프레임웍을 지정한 프레임웍 버젼으로 변경하게 됩니다


2003/11/20

Windows Server 2003에서 VSS(Volume Shadow Copy) 설정

Volume Shadow Copy 는 Windows Server 2003 에서 새롭게 지원하는 기능으로, 아주 짧은 시간에 로드 없이 복사본을 유지하는 기능 입니다.

1. 윈도우탐색기 또는 MMC의 디스크관리자 디스크 등록정보 선택.

2. 관리메뉴에서 속성 - 섀도 복사본 탭 선택(윈도우탐색기)

3. 설정하고자 하는 드라이브를 선택후, 설정 클릭.
(기본설정이 되어 있지 않다면, 기본 설정값으로 매 주중 07:00에 실행되도록 설정된다.)

4.섀도 복사본 저정은 특정 드라이브에 저장 가능하도록 선택이 가능하며, 최소 용량은 100M 입니다.

5.스케쥴설정은 기본설정값을 사용하거나, 새로 지정이 가능합니다.
(스케쥴 설정은 윈도우 보조프로그램의 스케쥴러에서의 설정법과 동일.)

6.설정값 저장완료후, "지금 만들기" 를 바로 실행된다.





□ 다음과 같은 방법으로 섀도복사본을 확인가능하다.

1. 윈도탐색기에서 확인.



2. Command Line에서 확인

C:\>vssadmin list shadows
vssadmin 1.1 - 볼륨 섀도 복사본 서비스 관리 명령줄 도구
(C) Copyright 2001 Microsoft Corp.

섀도 복사본 세트 ID의 콘텐트: {3af9eedd-66b1-4029-84dd-f64c565eed78}
다음 작성 시간에 1 섀도 복사본 포함: 2003-11-19 오후 5:50:23
섀도 복사본 ID: {17534ef3-c06c-4388-8f6e-f2012b5184d1}
원본 볼륨: (C:)\\?\Volume{46498d72-0e2c-11d8-b584-806e6f6e6963}\
섀도 복사본 볼륨: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
원본 컴퓨터: SERVERINFO
서비스 컴퓨터: SERVERINFO
공급자: 'Microsoft Software Shadow Copy provider 1.0'
형식: ClientAccessible
특성: Persistent, Client-accessible, No auto release, No writers, Differential


*섀도 복사본 서비스의 좋은점은 윈도우 시스템 및 특정 서비스에서 점유하고 있는 파일도 저장이 가능하다는 것이다. 그리고, 기존 백업방법에서 VSS를 지원하는 백업시 백업 및 복원 시간을 많이 줄일수 있다.

Volume Shadow Copy 클라이언트 프로그램은,

C:\WINDOWS\system32\clients\twclient  또는,

http://www.microsoft.com/downloads/details.aspx?familyid=E382358F-33C3-4DE7-
ACD8-A33AC92D295E&displaylang=ko
 에서 다운로드 가능합니다.


19-vss_configure_1.PNG
19-vss_configure_2.PNG

2003/11/18

ERD Commander 2003 이란?

최근 Windows NT는 아주 중요한 레지스트리 파일이나, 시작옵션의 복사본을 저장할수 있는 응급복구디스크(ERD)를 만들수 있습니다.

MS는 이와 같은 기능은 Automated System Recovery(ASR)과 the Recovery Console(RC) 로 대체를 하고 있습니다.

Winternals Software사의 ERD Commander 2003이 ERD를 만들수 있는 가장 좋은 툴이 아닐까 생각됩니다.



프로그램 시작시, ERD Commander는 컴퓨터를 스캔합니다. 만약, 멀티OS가 세팅된 시스템이라면, 작업코자 하는 시스템을 선택할수 있습니다. 선택후, 레지스트리나, 특정 오류를 점검하고, 수정합니다.

ERD Commander는 Windows XP와 같은 시작메뉴, 몇몇 데스크탑 아이콘을 제공합니다.
시작메뉴는 다음과 같은 메뉴가 있습니다.

- Administration Tools
(System Information, Service and Driver Manager, Locksmith, Event Log Viewer, Disk Management, TCP/IP Configuration, File Sharing, System Compare, System Restore)
- FileRestore
- Explorer
- Search
- Registry Editor
- Notepad
- Console

특이할만한 점은 관리메뉴에서 Locksmith 툴은 해당 컴퓨터의 어떤 계정이라도 패스워드를 리셋이 가능합니다.


Service and Driver Manager는 특정 서비스를 부팅시 실행되지 않도록 중지 또는 disable 설정을 할수 있습니다.

Explorer은 모든 디스크 드라이브와 공유폴더 및 원격연결드라이브를 엑세스 할수 있습니다.


FileRestore는 시스템에서 삭제된 파일을 복원하는 기능입니다.


ERD Commander 2003 버젼에 새롭게 추가된 기능으로는 .zip/.cap등 압축파일을 지원하며,디스크포맷이나, 파티션설정도 가능합니다.

또한, 문제발생시 원인규명를 위해 드라이버, 서비스, 시스템파일등을 부팅시스템이 아닌, 다른 시스템에 특정시점으로 복원하거나, 비교할수 있습니다.

자세한 정보는 제작사 웹사이트 http://www.winternals.com 를 방문해 보시기 바랍니다.

*참고로 유료 프로그램입니다만, 값어치는 충분히 할수 있는 프로그램입니다.

17-windowsEnviroment.gif
17-locksmith.gif
17-fileexplorer.gif
17-filerestore.gif

2003/11/12

Windows 2000 시간서버와 동기화 설정

서비스 항목에서 "Windows Time" 서비스가 활성화가 되어 있는지 먼저 확인합니다.

C:\>net stop "Windows Time"
C:\>net time /SETSNTP:time.windows.com
C:\>net start "Windows Time"

와 같이 하면, MS에서 운영하는 시간서버와 동기화하게 됩니다. 물론, 시간기준은 현재 운영체제의 지역설정을 기준으로 설정됩니다.

위와 같이하면, 기본값인 "SpecialSkew" 로 설정됩니다.


- 동기화 옵션은 다음과 같은 종류가 있습니다.

Period: REG_DWORD 또는 REG_SZ (레지스트리값임)
시간 서비스의 동기화 횟수를 제어하는 데 사용됩니다. 문자열 값이 지정된 경우 아래 값 중 하나여야 합니다.
0 = 하루에 한 번
65535, "BiDaily" = 이틀에 한 번
65534, "Tridaily" = 3일에 한 번
65533, "Weekly" = 일주일에 한번
65532, "SpecialSkew" = 동기화가 세 번 성공될 때까지 45분에 한번, 이후 8시간에 한번(하루에 세 번) [기본값]
65531, "DailySpecialSkew" = 동기화가 한 번 성공될 때까지 45분에 한 번, 이후 하루에 한 번
freq = 하루에 freq 번


- NTP서버의 경우도 레지스트리에서 직접지정이 가능합니다.

NtpServer: REG_SZ(옵션)
시간 원본을 수동으로 구성하는 데 사용됩니다. 동기화할 DNS 이름 또는 IP 주소에 이 값을 설정합니다. 하나의 DNS 이름 또는 IP 주소만 지정합니다. net time 명령을 사용하여 명령줄에서 이 값을 수정할 수 있습니다.
기본적으로 값은 비어 있음

마지막으로 레지스트리 위치는
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
입니다.

다른 한국지역 Time Server를 지정하고자 할경우 [ ] 을 참고하시기 바랍니다.

2003/11/06

SQL서버에서 sp_OACreate를 활용한 메일발송 예제

다음 Query는 SQL Server에서 메일을 발송하는 예제입니다. 이 쿼리는 IIS-SMTP 서비스가 실행되고 있어야 합니다. 아래 코드는 CDONTS 컴포넌의 객체를 생성하여 보내는 방법입니다.

DECLARE @SenderAddress varchar(100) 
DECLARE @RecipientAddress varchar(100) 
DECLARE @Subject varchar(200) 
DECLARE @Body varchar(8000) 
DECLARE @oMail int--Object reference 
DECLARE @resultcode int 

SET @SenderAddress = 'serverinfo@serverinfo.pe.kr'
SET @RecipientAddress = 'webmaster@serverinfo.pe.kr'
SELECT @Subject = '이벤트 발생날짜 ' + CAST(getdate() AS varchar(12)) 
SET @Body = 'This is the body of my email'
EXEC @resultcode = sp_OACreate 'CDONTS.NewMail',
    @oMail OUT IF @resultcode = 0 
BEGIN EXEC @resultcode = sp_OASetProperty @oMail,
    'BodyFormat',
    0 EXEC @resultcode = sp_OASetProperty @oMail,
    'MailFormat',
    0 EXEC @resultcode = sp_OASetProperty @oMail,
    'Importance',
    1 EXEC @resultcode = sp_OASetProperty @oMail,
    'From',
    @SenderAddress EXEC @resultcode = sp_OASetProperty @oMail,
    'To',
    @RecipientAddress EXEC @resultcode = sp_OASetProperty @oMail,
    'Subject',
    @Subject EXEC @resultcode = sp_OASetProperty @oMail,
    'Body',
    @Body EXEC @resultcode = sp_OAMethod @oMail,
    'Send',
    NULL EXEC sp_OADestroy @oMail 
END


활용은 백업등 SQL Server 작업 에이젼트에서 특정작업후, 다음단계로 확인메일을 보내는 것으로 활용할수 있습니다. sp_OACreate 프로시져는 해당 호스트에 설치된 OLE오브젝트의 인스턴스를 생성할수 있습니다. 자세한 사용법은 온라인도움말을 참조하시기 바랍니다.



06-TechNetB_masthead_ltr.gif


137GB 이상 ATAPI hard disk 를 접근가능 설정

Windows XP Service Pack 1 (SP1) and Windows 2000 SP3 이후부터는
48bit LBA를 지원합니다.

137GB이상 48-bit LBA를 가능하게 할려면, 다음과 같이 하면 됩니다.

1. regedit
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters
3. 새로운 DWORD 값 생성.
4. 이름에 EnableBigLba
5. 값에 1을 지정합니다.
6. 레지스트리를 닫고, 컴퓨터를 재시작하면 적용됩니다.

만약에, 48-bit LBA 를 지원하지 않는 OS로 멀티부팅을 이용하시면 블루스크린이
발생할수 있으니, 주의해야 합니다.

* 만약 에러가 발생할경우 로그온이 가능하면(안전모드포함), 레지스트리를 이전상태로 복원하시고, 부팅이 전혀되지 않을경우 CD롬 부팅을 통해서 레지스트리 파일을 교체해야 합니다. 물론, 레지스트리를 백업해놓았을 경우입니다.

시스템 재시작후에도 여전히 137GB를 인식하지 못한다면 시스템 메인보드의 바이오스에서 지원하지 않거나, 적합하지 않기 때문입니다. 이런경우 메인보드 제조사에 문의를 해야 합니다.



05-TechNetB_masthead_ltr.gif

Windows XP SP1 / Windwos2000 에서 폴더 Listing Reset

다음 예와 같이 폴더 Listing 이 string 대신에 numeric에 의해서 sorting이 됩니다.

 Win2K Listing         
 XP Listing --------------------   ------------------
 1.txt                 
 1.txt 110.txt               
 2.txt 12.txt               
 8.txt 2.txt                 
 12.txt 23.txt               
 23.txt 8.txt                 
 110.txt 

강제적으로 폴더 sorting 을 string 기준으로 할려면 다음과 같이 레지스트리 값을 수정합니다.

1. regedit.exe

2. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
3. 새로운 DWORD 값을 생성.

4. 이름을 NoStrCmpLogical 로 지정.

5. 값으로 1 을 지정.

6. 레지스트리를 닫고, 컴퓨터를 재시작하면 적용됩니다.

 컴퓨터 전제에 적용할려면, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer 에서 위와 같은 순서로 작업하면 됩니다.


Recovery Console (RC) 에서 administrator 패스워드 없이 작업

다음과 같은 순서에 의해서 레지스트리를 수정하면 됩니다.

1. regedit.txt

2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\
CurrentVersion\Setup\RecoveryConsole

3. SecurityLevel(보안레벨)에서 1로 수정합니다. (0 일경우 패스워드를 요구합니다ㅏ.)

4. 레지스트리를 닫으면, 바로 적용됩니다.


이 과정은 MMC 콘솔에서도 동일하게 설정이 가능합니다.

로컬보안정책 -> 로컬정책 -> 보안옵션 에서
복구콘솔:자동 관리자적 로그온 허용을 "사용함"으로 하면 됩니다.

* 이 설정은 특히 주의해야 합니다. 복구작업시 편리함이 있기는 하지만,
관리자 권한이 없어도 복구콘솔에 접근이 가능하기 때문입니다.


배치파일에서 입력된 인수값 모두 출력

test.bat

------------------------------------------------------
@echo off echo %*
------------------------------------------------------

다음과 같이 실행하면,

C:\>test a b c d e f g h i j k l m n o p 결과는 다음과 같이 출력됩니다.

a b c d e f g h i j k l m n o p

마지막에 asterisk(*) 를 사용하면, 모든 인수를 출력합니다.

2003/11/05

배치파일에서 최대 인수 갯수

다음과 같은 test.bat 에서는 9개의 인수를 사용할수 있습니다.

test1.bat 코드
------------------------------------------------------------------------------
@rem test.bat @echo off echo %1 %2 %3 %4 %5 %6 %7 %8 %9
------------------------------------------------------------------------------

실행.
c:\>test1 a b c d e f g h i 결과는 다음과 같이 출력합니다.

a b c d e f g h i 인수 0(%0) 은 프로그램이나, 배치파일의 이름입니다.

만일 9보다 큰 숫자의 이상의 인수를 사용한다면, 예로, %11 또는 %22 등 사용하면, 다음과 같습니다.

test2.bat 코드
------------------------------------------------------------------------------
@rem test.bat @echo off echo %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %21 %32
------------------------------------------------------------------------------

실행. C:\>test2 a b c d e f g h i j k l 결과. test a b c d e f g h i a0 b1 c2

숫자 10 이상을 사용하면, 맨앞자 1에 해당하는 a와 다음글자0 이 붙여져 출력됩니다.

그래서, %1 ~ %9 까지를 인수로 사용합니다.

다운로드한 Widnwos 업데이트 패키지 내용 확인

다양한 third-party 어플리케이션(예, winzip...)으로 다운로드한 Windows업데이트 패키지 내용을 보거나, 열수 있습니다.

그러나, 업데이트 패키중 Deltas-aware(IPD-aware)와 같은 내부 패키지 종류가 있는데, 업데이트된 패키지를 실행할때 바이너리 파일을 재생성 합니다.

그러나,써드파티 프로그램으로 업데이트된 패키지를 열대, 단 하나의 바이너리 파일만 볼수 있습니다.

업데이트된 패키지 내용을 보기위해서는 -x 스위치를 사용하면 됩니다.

WindowsXP-KB24146-x86-ENU.exe -x:d/temp/package


그냥, -x 스위치을 사용하면, 해당 업데이트 파일이 있는 폴더에 파일을 풉니다.

2003/11/04

SQL 자동증가값 초기화

테이블 시퀀스 필드의 경우 대부분 자동증가값을 이용을 하는데요.
어떤 경우 이부분에 있어 다시 재 초기화가 필요한 경우가 있습니다.
중간에 사라진 레코드가 너무 많아서 시퀀스값 사이가 클 경우 이겠지요..

DBCC CHECKIDENT(Table명,RESEED,초기값)

ex, DBCC CHECKIDENT(tb_board,RESEED,1)

초기값은 시퀀스값을 초기값을 기준으해서 값이 증가합니다.

IE6의 보안설정에 의한 쿠기 제한에 따른 웹서버 헤더추가

인터넷익스플로러 에서는 다음과 같은 개인 보안정책에 의해서 쿠기제한을 설정할수 있습니다.



다음 개념에 대해서 간략하게 이해를 해야 합니다.

□지속성 쿠키와 세션 쿠키 비교
Internet Explorer 6의 쿠키 처리 방법을 이해하려면 지속성 쿠키와 세션 쿠키의 차이점을 아는 것이 좋습니다. 지속성 쿠키는 정의된 만료 시간에 도달할 경우 삭제됩니다. 반면, 지정된 만료 시간이 없는 세션 쿠키는 Internet Explorer를 닫을 때 삭제됩니다. 지속성 쿠키는 사용자의 컴퓨터의 쿠키폴더에 만료시간까지 실제 파일로 저장되는 형태를 말합니다. 이부분이 다중사용자 컴퓨터의 경우(게임방 컴퓨터..) 보안에 취약합니다.

□제1 컨텍스트와 제3 컨텍스트
Internet Explorer 6은 제1 컨텐트를 호스트 도메인과 연관된 것으로 정의합니다. 제3 컨텐트는 호스트 도메인 이외의 도메인에서 만들어집니다. 예를 들어, 주소 표시줄에 www.wideworldimporters.com을 입력하여 이동했더니 이 사이트에 www.wingtiptoys.com의 배너 광고가 떠있다고 가정해 보십시오. 이 두 사이트에 쿠키를 설정할 경우, www.wideworldimporters.com의 쿠키가 제1 컨텍스트 쿠키이고 www.wingtiptoys.com의 쿠키가 제3 컨텍스트 쿠키가 됩니다.

이따금 상업용 웹 페이지에는 제1 컨텐트와 제3 컨텐트가 혼재해 있습니다. Internet Explorer 6 개인 정보 기능은 제1 컨텐트와 제3 컨텐트를 구별합니다. 이 때 근간이 되는 가정은 사용자의 제1 및 제3과의 관계가 서로 다르다는 것입니다. 실제로 사용자는 제3을 알지 못할 수도 있고 제3과 새로운 관계를 설정할 것인지 선택할 수도 있습니다. 이러한 이유 때문에 제3 컨텐트에 대한 기본 개인 정보 설정은 제1에 대한 설정보다 엄격합니다.

참고 www.wideworldimporters.com 및 toys.wideworldimporters.com은 둘 다 wideworldimporters.com이라는 동일한 최소 도메인을 갖고 있습니다. 동일한 최소 도메인을 호스트 도메인으로 공유하는 컨텐트를 제1 컨텐트로 간주하며, 마찬가지로 이러한 도메인에서 설정된 쿠키는 제1 쿠키로 간주합니다. 최소 도메인은 동일한 최상위 도메인(TLD)을 가져야 합니다. .com, .net, .org 등을 일반적인 TLD의 예로 들 수 있습니다.

위를 보통 도메인 쿠기라고 합니다. 도메인 쿠기를 생성했을경우 하위 도메인에 일괄적으로 동일한 쿠키가 적용됩니다.


쿠기 사용은 P3P압축정책에 의한 쿠키이어야 합니다. IE6는 3단계 쿠키 동작에 의해 처리를 합니다.



쿠기압축정책이 없는 지속성 쿠기의 경우 해당쿠기 허용을 제1컨텍스트 및 제3컨텍스트 모두 거부를 합니다. 그래서 대부분의 사이트에서 지속성 및 세션쿠기를 사용해서 카운터 및 게시판등에서 사용자 입력값을 저장해 두는데, 압축정책이 없으므로 클라이언트 컴퓨터에서 쿠기가 적용되지 않습니다.

특히나, 문제는 쿠키를 통해서 인증을 처리하는 웹사이트의 경우 문제가 큽니다.
대부분을 그렇게 하고 있다는데 있습니다.

■ 해결방법

다음과 같이, 웹서버의 헤더에 다음 P3P 쿠키규약을 등록해 줍니다. 물론, 대부분은 되지만, 보안이 강화된 브라우져에서는 쿠키가 안먹는 경우를 대비해서 등록을 해줍니다.

개인 정보 태그 및 해당 압축 토큰으로 용도, 수신인, 범부 및 액세스 토큰을 결합하여 예제에 대한 압축 정책을 만들 수 있습니다. 압축 정책은 다음 구문을 사용하는 사용자 지정 HTTP 응답 헤더를 통해 전송합니다.

P3P: CP="CAO PSA CONi OTR OUR DEM ONL"
*해당 코드에 대한 자세한 설명은 P3P 규약문서를 참고하시기 바랍니다.
(http://www.w3c.org/tr/p3p)



이 헤더는 ASP(Active Server Pages)를 사용하거나 Microsoft® Windows® 2000 서버 및 사용이 많은 다른 웹 서버의 컴퓨터 관리 콘솔을 통해 HTTP 응답에 추가할 수 있습니다. 쿠키 압축 정책이 HTTP 응답에 있는 쿠키 데이터와 함께 서버에서 전송되고 쿠키에 대한 결정과 설정은 클라이언트(Internet Explorer 6)에서 수행된다는 점에 주의합니다.

ASP코드에서 헤더를 추가하는 방법은 다음과 같습니다.
<% Response.AddHeader "Set-Cookie" , "test=id=server&pwd=1234" %>


■ 테스트
IE6이 설치된 웹브라우져의 보안정책을 최대로 설정한후 임의 쿠키가 설정되는지 점검을 해보아야 합니다.


03-ie6_privacy.bmp
03-ie6_rist.bmp
03-iis_header_set.JPG

가장 많이 본 글