Mengonfigurasi Layanan Aktivasi Proses Windows untuk Digunakan dengan Windows Communication Foundation
Topik ini menjelaskan langkah-langkah yang diperlukan untuk menyiapkan Layanan Aktivasi Proses Windows (Windows Process Activation Service, juga dikenal sebagai WAS) di Windows Vista untuk menghosting layanan Windows Communication Foundation (WCF) yang tidak berkomunikasi melalui protokol jaringan HTTP. Bagian berikut menguraikan langkah-langkah untuk konfigurasi ini:
Pasang (atau konfirmasikan penginstalan) komponen aktivasi WCF yang diperlukan.
Buat situs WAS dengan pengikatan protokol jaringan yang ingin Anda gunakan, atau tambahkan pengikatan protokol baru ke situs yang sudah ada.
Buat aplikasi untuk menghosting layanan Anda dan mengaktifkan aplikasi tersebut untuk menggunakan protokol jaringan yang diperlukan.
Bangun layanan WCF yang mengekspos titik akhir non-HTTP.
Mengonfigurasi Situs dengan pengikatan Non-HTTP
Untuk menggunakan pengikatan non-HTTP dengan WAS, pengikatan situs harus ditambahkan ke konfigurasi WAS. Penyimpanan konfigurasi untuk WAS adalah file applicationHost.config, yang terletak di direktori %windir%\system32\inetsrv\config. Penyimpanan konfigurasi ini dibagikan oleh WAS dan IIS 7.0.
applicationHost.config adalah file teks XML yang dapat dibuka dengan editor teks standar apa pun (seperti Notepad). Namun, alat konfigurasi baris perintah IIS 7.0 (appcmd.exe) adalah cara yang lebih disukai untuk menambahkan pengikatan situs non-HTTP.
Perintah berikut menambahkan pengikatan situs net.tcp ke situs Web default menggunakan appcmd.exe (perintah ini dimasukkan sebagai satu baris).
appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']
Perintah ini menambahkan pengikatan net.tcp baru ke situs Web default dengan menambahkan baris yang ditunjukkan di bawah ini ke file applicationHost.config.
<sites>
<site name="Default Web Site" id="1">
<bindings>
<binding protocol="HTTP" bindingInformation="*:80:" />
//The following line is added by the command.
<binding protocol="net.tcp" bindingInformation="808:*" />
</bindings>
</site>
</sites>
Mengaktifkan Aplikasi untuk Menggunakan Protokol Non-HTTP
Anda dapat mengaktifkan atau menonaktifkan protokol jaringan individual di tingkat aplikasi. Perintah berikut ini menggambarkan cara mengaktifkan protokol HTTP dan net.tcp untuk aplikasi yang berjalan di Default Web Site
.
appcmd.exe set app "Default Web Site/appOne" /enabledProtocols:net.tcp
Daftar protokol yang diaktifkan juga dapat diatur dalam <elemen applicationDefaults> dari konfigurasi XML situs yang disimpan di ApplicationHost.config.
Kode XML berikut dari applicationHost.config mengilustrasikan situs yang terikat ke protokol HTTP dan non-HTTP. Konfigurasi tambahan yang diperlukan untuk mendukung protokol non-HTTP dipanggil dengan komentar.
<sites>
<site name="Default Web Site" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="D:\inetpub\wwwroot" />
</application>
<bindings>
<!-- The following two lines are added by the command. -->
<binding protocol="HTTP" bindingInformation="*:80:" />
<binding protocol="net.tcp" bindingInformation="808:*" />
</bindings>
</site>
<siteDefaults>
<logFile
customLogPluginClsid="{FF160663-DE82-11CF-BC0A-00AA006111E0}"
directory="D:\inetpub\logs\LogFiles" />
<traceFailedRequestsLogging
directory="D:\inetpub\logs\FailedReqLogFiles" />
</siteDefaults>
<applicationDefaults
applicationPool="DefaultAppPool"
<!-- The following line is inserted by the command. -->
enabledProtocols="http, net.tcp" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
Jika Anda mencoba mengaktifkan layanan menggunakan WAS untuk aktivasi Non-HTTP dan Anda belum menginstal dan mengonfigurasi WAS, Anda mungkin melihat kesalahan berikut:
[InvalidOperationException: The protocol 'net.tcp' does not have an implementation of HostedTransportConfiguration type registered.] System.ServiceModel.AsyncResult.End(IAsyncResult result) +15778592 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15698937 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265 System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +227 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
Jika Anda melihat kesalahan ini, pastikan WAS untuk Aktivasi Non-HTTP diinstal dan dikonfigurasi dengan benar. Untuk informasi selengkapnya, lihat Cara: Menginstal dan Mengonfigurasi Komponen Aktivasi WCF.
Membangun Layanan WCF Yang Menggunakan WAS untuk aktivasi Non-HTTP
Setelah Anda melakukan langkah-langkah untuk menginstal dan mengonfigurasi WAS (lihat Cara: Menginstal dan Mengonfigurasi Komponen Aktivasi WCF), mengonfigurasi layanan untuk menggunakan WAS untuk aktivasi adalah serupa dengan mengonfigurasi layanan yang dihosting di IIS.
Untuk instruksi terperinci tentang membangun layanan WCF yang diaktifkan WAS, lihat Cara: Menghosting Layanan WCF di WAS.