2003/04/26

C# COM+ 생성 및 등록 방법

1. C# 클레스라이브러리 프로젝트 생성.

2.참조에 System.EnterpriseSevices 참조추가 및 using에 추가 및 using System.Runtime.InteropServices; 추가.

3.sn.exe로 강력한 이름생성. sn.exe -k "test.snk"

4.Assemblyinfo.cs 의 [assembly: AssemblyKeyFile("..\\..\\sampleClass.snk")] 추가.

5.cs파일내 Class에 [ClassInterface(ClassInterfaceType.AutoDual)] 추가.

6.컴파일 한후 gacutil.exe -i test.dll 로 전역어셈블리케시에 등록

7.regsvcs.exe test.dll 로 COM+서비스에 등록.

8.해당COM요소의 등록정보->보안-> 인증에서 "어플리케이션 엑세스 체크" 해제.

9.asp3파일내에서 객체를 생성하여 사용.


### 샘플C#코드  ###

using System;
using System.Runtime.InteropServices;
using System.EnterpriseServices;

[assembly: ApplicationName(".NET COM+ 컴포넌트 예제")]    <-------
[assembly: ApplicationActivation(ActivationOption.Server)]    <-------
     
namespace sampleClass
{
 [ComVisible(true)]   <-------
 [ClassInterface(ClassInterfaceType.AutoDual)]  <-------
 
 public class MyComponent : ServicedComponent  <-------  상속필수.
 {
  public string ReturnString()
  {
   return "Hello";
  }
 }
}



구성요소 서비스에 등록된 화면. 


랜카드 교체후에도 이전 랜카드 정보가 그대로 남아있을때

현상 :

기존의 랜카드를 새로운 랜카드로 교체한후 , ip 등의 네트웍정보 세팅시 기존의 랜카드에 세팅이 되어 있어 중복세팅이 불가능하다고 에러메시지를 나타냅니다.

네트워크 어댑터에 사용자가 입력한 ◯.◯.◯.◯ IP 주소는 이미  Name of adapter 어댑터에 할당되었습니다. 컴퓨터에 실제로 존재하지 않거나 작동하지 않는 레거시 어댑터이기 때문에 Name of adapter은(는) 네트워크 및 전화 접속 연결 폴더에서 숨겨져 있습니다. 어댑터에 같은 주소로 할당하고 사용하면, 하나의 어댑터만 이 주소를 사용하게 됩니다. 이는 올바르지 않은 시스템 구성을 초래합니다. 고급 대화 상자의 IP 주소 목록에 다른 IP 주소를 입력하시겠습니까?


다음 순서대로 해주면 됩니다.

시작 -> 설정 -> 제어판 -> 하드웨어 추가/제거 -> 다음 클릭 - > 장치 제거/분리 - > 장치 제거 -> 숨김 장치 제거 표시 를 하시면 기존에 있던 랜카드가 그대로 남아있습니다.

이전 랜카드를 제거를 하시고 새로 추가된 랜카드도 다시 제거를 한 다음 랜카드를 다시 잡아 주시면 됩니다.

원격서버 및 로컬 터미널 세션 끊어 주기

Windows2000 Server 및 Windows Server 2003 에서는 관리용 터미널 세션으로 2개 밖에 제공하지 않습니다.

그런데, 터미널에 접속후 연결을 끊지 않을 경우 다른 사용자의 로그인이 불가능합니다.

방법은 query session 으로 세션상태를 점검한후, 다음 3개의 명령을 이용해서 세션을 원래대로 해주면 됩니다.

단, 원격서버의 세션을 끊을때는 원격서버에 대한 Admin권한이 있어야 하며, RPC DCOM을 통해서 처리됩니다.

사용법은 간단합니다.

■ reset session
터미널 서버에서 세션을 다시 설정(삭제)할 수 있도록 합니다.
reset session {세션이름 | 세션id} [/server:서버이름] [/v]

■ logoff
세션에서 사용자를 로그오프시키고 서버에서 세션을 삭제합니다.
logoff [세션이름 | 세션id] [/server:서버이름] [/v]

/v : 수행할 동작에 대한 정보를 표시합니다.

■ tsdiscon
터미널 서버에서 세션의 연결을 끊습니다.

tsdiscon [세션id | 세션이름] [/server:서버이름] [/v]


■ query session
터미널 서버에 있는 세션에 대한 정보를 표시합니다. 목록에는 활성 세션뿐 아니라 서버에서 실행하는 다른 세션에 대한 정보도 표시됩니다.
query session [세션이름 | 사용자이름 | 세션id] [/server:서버이름] [/mode] [/flow] [/connect] [/counter]

/mode : 현재의 라인 설정을 표시합니다.
/flow : 현재의 흐름 제어 설정을 표시합니다.
/connect : 현재의 연결 설정을 표시합니다.
/counter : 만든 세션, 연결이 끊긴 세션 및 다시 연결된 세션의 전체 개수를 포함하여 현재의 카운터 정보를 표시합니다.

가장 많이 본 글