Saya membuka https://mywebsite/MyApp/Myservice.svc dan mendapatkan kesalahan berikut ini:
(Tautan berfungsi jika saya menggunakan http:// )
" Layanan '/MyApp/MyService.svc' tidak dapat diaktifkan karena adanya pengecualian selama kompilasi. Pesan pengecualiannya adalah: Tidak dapat menemukan alamat dasar yang cocok dengan skema https untuk endpoint dengan binding BasicHttpBinding. Skema alamat dasar yang terdaftar adalah [http].."
EDIT: Jadi jika saya mengubah address=""
menjadi address="https:// ..."
maka saya malah mendapatkan kesalahan ini:
"Kesalahan: Protokol 'https' tidak didukung..... ChannelDispatcher di 'https://.../Annotation.svc' dengan kontrak '"Anotasi "' tidak dapat membuka IChannelListener."
Inilah tampilan Web.Config
saya:
<services>
<service behaviorConfiguration="AnnotationWCF.AnnotationBehavior"
name="AnnotationWCF.Annotation">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Annotation"
contract="AnnotationWCF.Annotation" />
<endpoint address=""
binding="basicHttpBinding" bindingConfiguration="SecureTransport"
contract="AnnotationWCF.Annotation" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Annotation" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
<binding name="SecureTransport" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
Ternyata masalah saya adalah bahwa saya menggunakan load balancer untuk menangani SSL, yang kemudian mengirimkannya melalui http ke server yang sebenarnya, yang kemudian mengeluh.
Deskripsi perbaikannya ada di sini: http://blog.hackedbrain.com/2006/09/26/how-to-ssl-passthrough-with-wcf-or-transportwithmessagecredential-over-plain-http/
Edit: Saya memperbaiki masalah saya, yang sedikit berbeda, setelah berbicara dengan dukungan microsoft.
Aplikasi silverlight saya memiliki alamat endpoint dalam kode yang melewati https ke load balancer. Penyeimbang beban kemudian mengubah alamat titik akhir ke http dan menunjuk ke server yang sebenarnya yang akan dituju. Jadi pada setiap konfigurasi web server, saya menambahkan listenUri untuk endpoint yang http, bukan https
<endpoint address="" listenUri="http://[LOAD_BALANCER_ADDRESS]" ... />
Pastikan SSL diaktifkan untuk server Anda!
Saya mendapatkan kesalahan ini ketika mencoba menggunakan file konfigurasi HTTPS pada kotak lokal saya yang tidak memiliki sertifikat itu. Saya mencoba melakukan pengujian lokal - dengan mengubah beberapa binding dari HTTPS ke HTTP. Saya pikir akan lebih mudah melakukan ini daripada mencoba menginstal sertifikat yang ditandatangani sendiri untuk pengujian lokal.
Ternyata saya mendapatkan kesalahan ini karena Saya tidak mengaktifkan SSL pada IIS lokal saya meskipun saya tidak berniat untuk benar-benar menggunakannya.
Ada sesuatu dalam konfigurasi untuk HTTPS. Membuat sertifikat yang ditandatangani sendiri di IIS7 memungkinkan HTTP untuk bekerja :-)
Saya pikir Anda mencoba mengonfigurasi layanan Anda dengan cara yang mirip dengan konfigurasi berikut ini. Ada informasi lebih lanjut di sini: Tentukan Layanan dengan Dua Endpoint Menggunakan Nilai Pengikatan yang Berbeda. Selain itu, selain untuk pengembangan, mungkin bukan ide yang baik untuk memiliki kedua titik akhir HTTP &; HTTPS ke layanan yang sama. Ini agak mengalahkan tujuan HTTPS. Semoga ini membantu!
<service type="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
<endpoint
address="http://computer:8080/Hello"
contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
binding="basicHttpBinding"
bindingConfiguration="shortTimeout"
</endpoint>
<endpoint
address="http://computer:8080/Hello"
contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
binding="basicHttpBinding"
bindingConfiguration="Secure"
</endpoint>
</service>
<bindings>
<basicHttpBinding
name="shortTimeout"
timeout="00:00:00:01"
/>
<basicHttpBinding
name="Secure">
<Security mode="Transport" />
</basicHttpBinding>
</bindings>