Net.TCP 전송을 사용하는 자체 호스팅 서비스는 네트워크 통신에 사용되는 기본 TCP 소켓의 동작을 제어하는 및 MaxPendingAccepts와 같은 ListenBacklog 몇 가지 고급 설정을 제어할 수 있습니다. 그러나 각 소켓에 대한 이러한 설정은 전송 바인딩이 기본적으로 사용하도록 설정된 포트 공유를 사용하지 않도록 설정한 경우에만 바인딩 수준에서만 적용됩니다.
net.tcp 바인딩이 전송 바인딩 요소를 설정하여 portSharingEnabled =true 포트 공유를 가능하게 하면 외부 프로세스(즉, Net.TCP 포트 공유 서비스를 호스팅하는 SMSvcHost.exe)가 대신 TCP 소켓을 관리할 수 있도록 암시적으로 허용합니다. 예를 들어, TCP를 사용하는 경우 다음을 지정합니다.
<tcpTransport portSharingEnabled="true" />
이러한 방식으로 구성하면 서비스의 전송 바인딩 요소에 지정된 모든 소켓 설정이 무시되고 SMSvcHost.exe.
SMSvcHost.exe구성하려면 SmSvcHost.exe.config라는 XML 구성 파일을 만들고 SMSvcHost.exe 실행 파일과 동일한 실제 디렉터리(예: C:\Windows\Microsoft.NET\Framework\v4.5)에 배치합니다.
다음 예제에서는 구성 가능한 모든 값에 대한 기본 설정이 명시적으로 명시된 샘플 SMSvcHost.exe.config보여 줍니다.
<configuration>
<system.serviceModel.activation>
<net.tcp listenBacklog="16" <!-- 16 * # of processors -->
maxPendingAccepts="4"<!-- 4 * # of processors -->
maxPendingConnections="100"
receiveTimeout="00:00:30" <!-- 30 seconds -->
teredoEnabled="false">
<allowAccounts>
<!-- LocalSystem account -->
<add securityIdentifier="S-1-5-18"/>
<!-- LocalService account -->
<add securityIdentifier="S-1-5-19"/>
<!-- Administrators account -->
<add securityIdentifier="S-1-5-20"/>
<!-- Network Service account -->
<add securityIdentifier="S-1-5-32-544" />
<!-- IIS_IUSRS account (Vista only) -->
<add securityIdentifier="S-1-5-32-568"/>
</allowAccounts>
</net.tcp>
</system.serviceModel.activation>
</configuration>
SMSvcHost.exe.config 수정하는 경우
일반적으로 SMSvcHost.exe.config 파일에 지정된 구성 설정은 Net.TCP 포트 공유 서비스를 사용하는 컴퓨터의 모든 서비스에 영향을 주므로 이 파일의 내용을 수정할 때는 주의해야 합니다. 여기에는 WAS(Windows Process Activation Service)의 TCP 활성화 기능을 사용하는 Windows Vista의 응용 프로그램이 포함됩니다.
그러나 Net.TCP 포트 공유 서비스의 기본 구성을 변경해야 하는 경우도 있습니다. 예를 들어 의 maxPendingAccepts 기본값은 4 * number of processors입니다. 포트 공유를 사용하는 많은 서비스를 호스팅하는 서버는 최대 처리량을 달성하기 위해 이 값을 늘릴 수 있습니다. 의 maxPendingConnections 기본값은 100입니다. 서비스를 호출하는 동시 클라이언트가 여러 개 있고 서비스가 클라이언트 연결을 끊는 경우에도 이 값을 늘리는 것을 고려해야 합니다.
SMSvcHost.exe.config에는 포트 공유 서비스를 사용할 수 있는 프로세스 ID에 대한 정보도 포함되어 있습니다. 프로세스가 공유 TCP 포트를 사용하기 위해 포트 공유 서비스에 연결하는 경우 포트 공유 서비스를 사용하도록 허용된 ID 목록과 비교하여 연결 프로세스의 프로세스 ID를 확인합니다. 이러한 ID는 SMSvcHost.exe.config 파일의 allowAccounts> 섹션에서 SID(보안 식별자)<로 지정됩니다. 기본적으로 포트 공유 서비스를 사용할 수 있는 권한은 시스템 계정(LocalService, LocalSystem 및 NetworkService)과 Administrators 그룹의 구성원에게 부여됩니다. 다른 ID(예: 사용자 ID)로 실행되는 프로세스가 포트 공유 서비스에 연결할 수 있도록 하는 응용 프로그램은 SMSvcHost.exe.config에 적절한 SID를 명시적으로 추가해야 합니다(이러한 변경 내용은 SMSvc.exe 프로세스가 다시 시작될 때까지 적용되지 않음).
비고
UAC(사용자 계정 컨트롤)를 사용하도록 설정된 Windows Vista 시스템에서는 로컬 사용자의 계정이 Administrators 그룹의 구성원인 경우에도 높은 권한이 필요합니다. 이러한 사용자가 권한 상승 없이 포트 공유 서비스를 사용할 수 있도록 하려면 사용자의 SID(또는 사용자가 구성원인 그룹의 SID)를 SMSvcHost.exe.config의 allowAccounts> 섹션에 명시적으로 추가해야 <합니다.
경고
기본 SMSvcHost.exe.config 파일은 SMSvcHost.exe 추적이 서비스 추적을 방해하지 않도록 하는 사용자 지정을 etwProviderId 지정합니다.