Tidak dapat melayani layanan WCF di IIS pada Windows 8

199

Ketika saya mencoba untuk melayani layanan WCF pada IIS di mesin Windows 8, saya mendapatkan kesalahan yang terkenal

Halaman yang Anda minta tidak dapat dilayani karena konfigurasi ekstensi. Jika halaman tersebut adalah skrip, tambahkan penangan. Jika file tersebut harus diunduh, tambahkan peta MIME.

Pekerjaan lama sekitar adalah untuk menjalankan aspnet_regiis -itetapi perintah ini tampaknya sudah usang di Windows 8 menghasilkan respons This option is not supported on this version of the operating system. (...).

Apa yang akan terjadi?

(Saya sudah berhasil mengaktifkan aspxhalaman reguler , sehingga sebagian besar konfigurasi IIS tampak sehat.)

faester
sumber
Untuk informasi lebih lanjut tentang aspnet_regiis -iperintah untuk pengguna pra-Windows 8, lihat tautan ini: aspsnippets.com/Articles/…
David

Jawaban:

406

Tampaknya tidak punya otak; layanan WCF harus diaktifkan menggunakan Programs and Features -> Turn Windows features on or offdi Control Panel. Pergi ke .NET Framework Advanced Services -> WCF Servicesdan aktifkan HTTP Activationseperti dijelaskan dalam posting blog ini di mdsn .

Dari command prompt (sebagai admin), Anda dapat menjalankan:

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

Jika Anda mendapatkan kesalahan maka gunakan di bawah ini

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45
faester
sumber
6
Saya menghabiskan waktu mencari di Manajer IIS. Saya pikir IIS Manager harus memiliki ikon yang mengarahkan atau memberi tahu pengguna tentang .NET Framework Advnaced Services.
Tony_Henrich
Menggunakan prompt perintah, saya mendapat kesalahan "Operasi selesai tetapi fitur WCF-HTTP-Activation tidak diaktifkan. Fitur induk yang diperlukan mungkin tidak diaktifkan. Anda dapat menggunakan opsi / enable-feature / all untuk mengaktifkan setiap fitur induk secara otomatis dari daftar berikut. Jika fitur induk sudah diaktifkan, lihat file log untuk diagnosa lebih lanjut. " Saya menggunakan metode GUI sebagai gantinya untuk mengetahui apa yang saya nyalakan dan itu berhasil.
Ben Adams
5
Aku punya sama "A diperlukan fitur orangtua mungkin tidak diaktifkan" error seperti Ben Anderson, dan mencoba saran dalam pesan kesalahan (menambahkan /allargumen), yang kemudian bekerja dengan baik: DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45.
Troy Gizzi
1
Tuan, luar biasa. Anda juga bisa menambahkan (ini detail kecil) bahwa ini bisa dilakukan tergantung pada versi .Net Framework. Seperti dalam.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18
Ini adalah penyelamat. Sebagian besar solusi online untuk masalah ini hanya memungkinkan Anda mengaktifkan .Net 3.5 Framework di bawah fitur Web. YANG TIDAK CUKUP. Anda juga harus mengambil langkah yang disebutkan di sini.
markaaronky
95

Untuk Windows Server 2012, solusinya sangat mirip dengan faester (lihat di atas). Dari Server Manager, klik Add roles and features, pilih server yang sesuai, lalu pilih Features. Di bawah .NET Framework 4.5 Features, Anda akan melihat WCF Services, dan di bawah itu, Anda akan menemukan HTTP Activation.

Bill Moon
sumber
Terima kasih untuk ini ! tapi bagaimana dengan .Net 4? Anda berpikir bahwa mengaktifkan fitur ini akan melakukan hal yang sama untuk. Net v4.0?
Aladdin Gallas
2
Dalam setiap aplikasi web yang ada, Anda juga harus melakukan yang berikut setelah menambahkan fitur Windows: - Mulai inetmgr - Buka "Handler mappings" - Periksa apakah pemetaan svc-ISAPI untuk ekstensi * .svc ada. Jika tidak, gunakan tindakan "Kembalikan Ke Induk" untuk menyalinnya dari situs web induk. Perhatikan bahwa ini mengasumsikan bahwa pemetaan handler kustom dikonfigurasikan di web.config untuk aplikasi, seperti yang biasanya terjadi pada IIS7 +. Jika tidak, Anda akan kehilangan mereka saat menjalankan "Kembalikan Ke Induk".
Berend Engelbrecht
13

Silakan lakukan dua langkah berikut pada IIS 8.0

Tambahkan tipe MIME baru & HttpHandler

  1. Ekstensi: .svc, tipe MIME: application / octet-stream

  2. Jalur permintaan: * .svc, Jenis: System.ServiceModel.Activation.HttpHandler, Nama: svc-Integrated

Jeneesh Velayudhan
sumber
Solusi terbaik untuk Instalasi Windows 7 saya yang lama yang gagal untuk mengaktifkan -. Net 3.5 (Aktivasi Http & Non-Http) dan WS. Terlalu rumit untuk menginstal ulang OS
user919426
Perlu diketahui tentang metode ini terutama ketika membuat dan menambahkan penangan Anda sendiri. Namun, jika Anda menggunakan 'menghidupkan dan mematikan fitur Windows' Anda akan mendapatkan sebagian besar ekstensi file yang diketahui, yang akan menghemat waktu Anda menambahkan masing-masing secara individual (dan menemukan semua detail yang benar)
Daniel Hollinrake
11

Anda juga dapat mencapainya dengan Mengaktifkan fitur windows. masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Mohit Dharmadhikari
sumber
3

Ini benar-benar solusi yang sama dengan solusi faester dan Bill Moon, tapi inilah cara Anda melakukannya dengan PowerShell:

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

Tentu saja, tidak ada yang menghentikan Anda menelepon DISMdari PowerShell juga.

JamesQMurphy
sumber
Sangat bagus. Terima kasih atas informasinya.
Rod Hartzell
-1

Anda dapat menambahkan kode ini ke web.config di asp mvc

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

Anda dapat mengubah ekstensi file dengan ekstensi file Anda

malik masis
sumber
Hai @malik - Bisakah Anda menjelaskan bagaimana memetakan ekstensi file dapat membuat svc-endpoints berfungsi?
faester
jika saya mengerti benar, Anda dapat mengubah ekstensi dengan yang Anda inginkan. Anda dapat melihat dari feedforall.com/mime-types.htm tetapi Anda akan mengatakan hal lain, maaf saya tidak mengerti.
malik masis