Saya mencoba untuk membuat layanan WCF lebih dari basicHttpBinding untuk digunakan lebih dari https. Inilah web.config saya:
<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
name="MyServices.PingResultService">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="defaultBasicHttpBinding"
contract="MyServices.IPingResultService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
...
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
...
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.UpdateServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Saya terhubung menggunakan WCFStorm yang dapat mengambil semua data meta dengan benar, tetapi ketika saya memanggil metode yang sebenarnya saya dapatkan:
Skema URI yang disediakan 'https' tidak valid; diharapkan 'http'. Nama parameter: via
Jawaban:
Coba tambahkan kredensial pesan di app.config Anda seperti:
sumber
Menambahkan ini sebagai jawaban, hanya karena Anda tidak dapat melakukan banyak format mewah dalam komentar.
Saya memiliki masalah yang sama, kecuali saya membuat dan mengikat klien layanan web saya sepenuhnya dalam kode.
Alasannya adalah DLL sedang diunggah ke dalam sistem, yang melarang penggunaan file konfigurasi.
Berikut adalah kode yang perlu diperbarui untuk berkomunikasi melalui SSL ...
sumber
Ubah dari
untuk
di file web.config Anda. Perubahan ini memungkinkan Anda untuk menggunakan https alih-alih http
sumber
Apakah Anda menjalankan ini di Cassini (vs server dev) atau di IIS dengan sertifikat yang diinstal? Saya memiliki masalah di masa lalu yang mencoba menghubungkan titik akhir aman di server web dev.
Berikut ini adalah konfigurasi pengikatan yang telah bekerja untuk saya di masa lalu. Alih-alih
basicHttpBinding
, ia menggunakanwsHttpBinding
. Saya tidak tahu apakah itu masalah bagi Anda.dan titik akhir
Juga, pastikan Anda mengubah konfigurasi klien untuk mengaktifkan keamanan Transport.
sumber
Saya memiliki pengecualian yang sama dalam sebuah
custom binding
skenario. Siapa pun yang menggunakan pendekatan ini, dapat memeriksanya juga.Saya sebenarnya menambahkan referensi layanan dari
local WSDL
file. Itu berhasil ditambahkan dan diperlukan ikatan khusus ditambahkan ke file konfigurasi. Namun, layanan sebenarnya adalah https; bukan http. Jadi saya mengubah elemet httpTransport sebagaihttpsTransport
. Ini memperbaiki masalahReferensi
sumber
Saya memiliki masalah yang sama persis dengan OP. Konfigurasi dan situasiku sama. Saya akhirnya mempersempitnya menjadi masalah di WCFStorm setelah membuat referensi layanan dalam proyek uji di Visual Studio dan mengkonfirmasikan bahwa layanan itu berfungsi. Di Storm Anda perlu mengklik opsi pengaturan "Config" (BUKAN "Config Klien"). Setelah mengklik itu, klik pada tab "Keamanan" pada dialog yang muncul. Pastikan "Jenis Otentikasi" diatur ke "Tidak Ada" (Standarnya adalah "Otentikasi Windows"). Presto, berhasil! Saya selalu menguji metode saya di WCFStorm karena saya membangunnya, tetapi tidak pernah mencoba menggunakannya untuk terhubung ke yang sudah diatur di SSL. Semoga ini bisa membantu seseorang!
sumber
Berlari ke masalah yang sama, inilah solusi saya yang pada akhirnya:
Saya pada dasarnya mengganti setiap kemunculan Http dengan Https. Anda dapat mencoba menambahkan keduanya jika Anda mau.
sumber
Jika Anda melakukan ini secara terprogram dan bukan di web.config:
sumber
Yang baik untuk diingat bahwa file konfigurasi dapat dipecah menjadi file sekunder untuk membuat perubahan konfigurasi lebih mudah pada server yang berbeda (dev / demo / produksi dll), tanpa harus mengkompilasi ulang kode / aplikasi dll. Misalnya kita menggunakannya untuk mengizinkan insinyur di tempat untuk membuat perubahan titik akhir tanpa benar-benar menyentuh file 'nyata'.
Langkah pertama adalah memindahkan bagian binding dari WPF App.Config ke file terpisah itu sendiri.
Bagian perilaku diatur untuk memungkinkan http dan https (tampaknya tidak mempengaruhi aplikasi jika keduanya diizinkan)
Dan kami memindahkan bagian binding ke file sendiri;
Dalam file bindings.config kita beralih keamanan berdasarkan protokol
Sekarang insinyur situs hanya perlu mengubah file Bindings.Config dan Client.Config tempat kami menyimpan URL aktual untuk setiap titik akhir.
Dengan cara ini kita dapat mengubah titik akhir dari http ke https dan kembali lagi untuk menguji aplikasi tanpa harus mengubah kode apa pun.
Semoga ini membantu.
sumber
Untuk menutup kembali pertanyaan di OP:
Tutorial WCFStorm membahas masalah ini dalam Bekerja dengan IIS dan SSL .
Solusi mereka bekerja untuk saya:
Butir (1) peluru terakhir yang berlaku berarti untuk menghapus awalan namespace yang VS bergantung pada atribut kontrak titik akhir, secara default "ServiceReference1"
jadi di app.config yang Anda muat ke WCFStorm yang Anda inginkan untuk ListsService:
sumber
Saya membutuhkan binding berikut untuk membuat tambang bekerja:
sumber
wsHttpBinding adalah masalah karena silverlight tidak mendukungnya!
sumber