Saya membangun aplikasi web yang berisi kontrak layanan WCF dan kontrol Silverlight yang membuat panggilan ke layanan WCF. Pada pengembangan dan pengujian server saya ini berfungsi dengan baik.
Ketika saya menyebarkan ke server langsung kami dan menjalankan aplikasi saya mendapatkan pengecualian dari jenis System.ServiceModel.ServiceActivationException
yang menyatakan bahwa layanan tidak dapat diaktifkan karena pengecualian selama kompilasi. Pengecualiannya adalah:
Koleksi ini sudah berisi alamat dengan skema http. Paling tidak ada satu alamat per skema dalam koleksi ini.
Saya membaca bahwa pengecualian ini dapat dilemparkan jika situs web memiliki lebih dari satu header host, yang berlaku di server langsung kami. Rupanya layanan WCF yang di-host di IIS hanya dapat memiliki satu alamat basis. Bagaimana saya bisa mengatasi masalah ini?
Ringkasan,
Solusi kode: Di sini
Solusi konfigurasi: Di sini
Dengan bantuan Mike Chaliy , saya menemukan beberapa solusi tentang cara melakukan ini melalui kode. Karena masalah ini akan mempengaruhi hampir semua proyek yang kami gunakan ke lingkungan langsung, saya mengulurkan untuk solusi konfigurasi murni. Saya akhirnya menemukan satu yang merinci cara melakukannya di .net 3.0 dan .net 3.5.
Diambil dari situs, di bawah ini adalah contoh cara mengubah konfigurasi web aplikasi Anda:
Solusi Dns (belum diuji): Saya pikir jika Anda membuat entri dns baru khusus untuk aplikasi web Anda, menambahkan situs web baru, dan memberikannya satu header host yang cocok dengan entri dns, Anda akan mengurangi masalah ini sama sekali, dan tidak akan mengurangi masalah ini sama sekali, dan tidak akan harus menulis kode khusus atau menambahkan awalan ke file web.config Anda.
sumber
Apakah Anda melihat ini - http://kb.discountasp.net/KB/a799/error-accessing-wcf-service-this-collection-already.aspx
sumber
Dalam kasus root saya penyebab masalah ini adalah beberapa binding http didefinisikan di situs web induk yaitu InetMgr-> Sites-> Mysite-> properties-> EditBindings. Saya menghapus satu http binding yang tidak diperlukan dan masalah teratasi.
sumber
Dan dalam kasus saya itu sederhana: Saya menggunakan wizard 'Tambahkan Layanan WCF' di Visual Studio, yang secara otomatis membuat bagian yang sesuai di app.config. Kemudian saya melanjutkan membaca Cara: Host Layanan WCF dalam Aplikasi yang Dikelola . Masalahnya adalah: Saya tidak perlu menentukan url untuk menjalankan layanan web.
Menggantikan:
Dengan:
Dan kesalahannya hilang.
Gagasan umum: jika Anda memberikan alamat dasar sebagai param dan menentukannya dalam konfigurasi, Anda mendapatkan kesalahan ini. Kemungkinan besar, itu bukan satu-satunya cara untuk mendapatkan kesalahan, kamu.
sumber
Saya punya masalah ini, dan penyebabnya agak konyol. Saya mencoba demo Microsoft tentang menjalankan ServiceHost dari w / dalam dieksekusi Command Line. Saya mengikuti instruksi, termasuk di mana dikatakan untuk menambahkan Layanan (dan antarmuka) yang sesuai. Tapi saya mendapat kesalahan di atas.
Ternyata ketika saya menambahkan kelas layanan, VS secara otomatis menambahkan konfigurasi ke app.config. Dan demo juga mencoba menambahkan info itu. Karena sudah ada di konfigurasi, saya menghapus bagian demo, dan itu berhasil.
sumber
Saya datang dengan kesalahan yang sama pada Exchange Server 2010 yang lama. Layanan (layanan replikasi kotak surat Exchange) memberikan kesalahan di atas dan proses migrasi tidak dapat dilanjutkan. Mencari melalui internet, saya datang dengan tautan ini yang menyatakan di bawah ini:
Exchange GRE gagal dibuka saat diinstal untuk pertama kalinya atau jika ada perubahan yang dilakukan ke server IIS. Gagal dengan snap-in error dan ketika Anda mencoba untuk membuka halaman snap-in, konten berikut ini ditampilkan:
Penyebab : Kesalahan ini terjadi karena nomor port http 443 sudah digunakan oleh aplikasi lain dan server IIS tidak dikonfigurasi untuk menangani beberapa pengikatan ke port yang sama.
Solusi : Konfigurasikan server IIS untuk menangani beberapa binding port. Hubungi vendor (Microsoft) untuk mengkonfigurasinya.
Karena layanan ini ditawarkan dari IIS Web Server, memeriksa Binding pada Situs Root memperbaiki masalah. Seseorang telah mengacaukan Bindings Situs, mendefinisikan aturan yang tumpang tindih dengan diri mereka sendiri dan mengacaukan layanan.
Memperbaiki Bindings yang benar menyelesaikan masalah, dalam kasus saya, dan saya tidak perlu mengkonfigurasi Web.Config.
sumber