Mengonfigurasi Layanan Berbagi Port Net.TCP

Layanan yang di-hosting sendiri yang menggunakan transportasi Net.TCP dapat mengontrol beberapa pengaturan lanjutan, seperti ListenBacklog dan MaxPendingAccepts, yang mengatur perilaku soket TCP yang mendasar yang digunakan untuk komunikasi jaringan. Namun, pengaturan ini untuk setiap soket hanya berlaku pada tingkat pengikatan jika pengikatan transportasi telah menonaktifkan berbagi port, yang diaktifkan secara default.

Ketika pengikatan net.tcp memungkinkan berbagi port (dengan mengatur portSharingEnabled =true pada elemen pengikatan transportasi), secara implisit memungkinkan proses eksternal (yaitu SMSvcHost.exe, yang menghosting Layanan Berbagi Port Net.TCP) untuk mengelola soket TCP atas namanya. Misalnya, saat menggunakan TCP, tentukan:

<tcpTransport portSharingEnabled="true"  />  

Ketika dikonfigurasi dengan cara ini, pengaturan soket apa pun yang ditentukan pada elemen pengikatan transportasi layanan diabaikan demi pengaturan soket yang ditentukan oleh SMSvcHost.exe.

Untuk mengonfigurasi SMSvcHost.exe, buat file konfigurasi XML bernama SmSvcHost.exe.config dan letakkan di direktori fisik yang sama dengan SMSvcHost.exe yang dapat dieksekusi (misalnya, C:\Windows\Microsoft.NET\Framework\v4.5).

Contoh berikut mengilustrasikan sampel SMSvcHost.exe.config, dengan pengaturan default untuk semua nilai yang dapat dikonfigurasi dinyatakan secara eksplisit.

<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>  

Kapan mengubah SMSvcHost.exe.config

Secara umum, perawatan harus dilakukan saat memodifikasi konten file SMSvcHost.exe.config, karena pengaturan konfigurasi apa pun yang ditentukan dalam file ini memengaruhi semua layanan pada komputer yang menggunakan Layanan Berbagi Port Net.TCP. Ini termasuk aplikasi di Windows Vista yang menggunakan fitur Aktivasi TCP Windows Process Activation Service (WAS).

Namun, terkadang Anda mungkin perlu mengubah konfigurasi default untuk Layanan Berbagi Port Net.TCP. Misalnya, nilai default untuk maxPendingAccepts adalah 4 * jumlah prosesor. Server yang menghosting sejumlah besar layanan yang menggunakan berbagi port dapat meningkatkan nilai ini untuk mencapai throughput maksimum. Nilai default untuk maxPendingConnections adalah 100. Anda harus mempertimbangkan menigkatkan nilai ini juga jika ada beberapa klien bersamaan yang memanggil layanan dan layanan menghilangkan koneksi klien.

SMSvcHost.exe.config juga berisi informasi tentang identitas proses yang dapat menggunakan layanan berbagi port. Ketika proses terhubung ke layanan berbagi port untuk menggunakan port TCP bersama, identitas proses dari proses penghubung diperiksa terhadap daftar identitas yang diizinkan untuk menggunakan layanan berbagi port. Identitas ini ditentukan sebagai pengidentifikasi keamanan (SID) di bagian <allowAccounts> dari file SMSvcHost.exe.config. Secara default, izin untuk menggunakan layanan berbagi port diberikan ke akun sistem (LocalService, LocalSystem, dan NetworkService) serta anggota grup Administrator. Aplikasi yang memungkinkan proses berjalan sebagai identitas lain (misalnya, identitas pengguna) untuk terhubung ke layanan berbagi port harus secara eksplisit menambahkan SID yang sesuai ke SMSvcHost.exe.config (perubahan ini tidak diterapkan sampai proses SMSvc.exe dimulai ulang).

Catatan

Pada sistem Windows Vista dengan Kontrol Akun Pengguna (UAC) diaktifkan, pengguna lokal memerlukan izin yang ditinggikan meskipun akun mereka adalah anggota grup Administrator. Untuk memungkinkan pengguna ini menggunakan layanan berbagi port tanpa elevasi, SID pengguna (atau SID grup tempat pengguna adalah anggota) harus secara eksplisit ditambahkan ke bagian <allowAccounts> dari SMSvcHost.exe.config.

Peringatan

File SMSvcHost.exe.config default menentukan etwProviderId kustom untuk mencegah pelacakan SMSvcHost.exe mengganggu jejak layanan.

Lihat juga