HTTP 404 saat mengakses file .svc di IIS

87

Saya baru-baru ini membuat layanan WCF yang berfungsi dengan baik ketika diuji dari Visual Studio 2008. tetapi ketika saya menyebarkan proyek ke IIS dan saya mencoba mengakses file .svc dari IIS, saya mendapatkan kesalahan ini:

"Server Error in '/' Application.The resource cannot be found.  "

Saya telah mengalami masalah ini selama 4 hari terakhir.

di Handler Mappings of IIS Manager, saya dapat melihat dua entri untuk .svc:

svc-Integrated and svc-ISAPI-2.0
Attilah
sumber

Jawaban:

75

Anda perlu menambahkan pemetaan untuk ekstensi SVC ke ASP.NET. Cara termudah untuk melakukannya adalah dengan menjalankan ServiceModelReg.exe -idari C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Anda mungkin juga perlu mengaktifkan ASP.NET jika Anda belum melakukannya.


Jika Anda menggunakan Windows Server 2012 atau 2016, ikuti petunjuk berikut:

tvanfosson.dll
sumber
Apakah Anda mencoba memulai ulang IIS setelahnya?
tvanfosson
Apakah Anda sekarang memiliki pemetaan pantomim untuk .svc?
tvanfosson
Ini bukan pemetaan pantomim- Pemetaan Ekstensi Aplikasi. lihat msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim
22
Penting: jangan lakukan ini di Server 2012 dengan .NET 4.5 diinstal. Itu mengacaukan saya sampai saya kemudian menjalankan ServiceModelReg.exe -ua. Lihat di sini untuk solusi Server 2012: stackoverflow.com/questions/11116134/…
Scott Anderson
110

Apa yang berhasil untuk saya, di Windows 2012 Server R2:

WCF HTTP 404

Terima kasih untuk "Aaron D"

Stefan Michev
sumber
4
Sejauh ini merupakan opsi termudah.
BIDeveloper
Itu berhasil untuk saya di desktop Win10, Win8.1, dan server Win2012 :) Terima kasih!
Skipper
Itu berhasil untuk saya di desktop Win10, Win8.1 dan server Win2012 :) Terima kasih!
Skipper
2
Untuk beberapa alasan, saya harus menginstal fitur untuk 3.5 dan juga untuk 4.5, dan melalui baris perintah: dism /online /enable-feature /featurename:WCF-http-Activation45 /all dan juga dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan
1
Bekerja pada Sever 2019 juga
Zar Shardan
56

Saya menemukan petunjuk ini di posting blog yang menunjukkan langkah ini, yang berfungsi untuk saya (Windows 8, 64-bit):

Pastikan bahwa di fitur windows, Anda memiliki kedua opsi WCF di bawah .NET framework dicentang. Jadi pergi ke Control Panel -> Program dan Fitur -> Aktifkan / Nonaktifkan Fitur Windows -> Fitur -> Tambah Fitur -> .NET Framework XX Fitur. Pastikan bahwa .Net framework mengatakan sudah diinstal, dan pastikan node Aktivasi WCF di bawahnya dipilih (kotak centang dicentang) dan kedua opsi di bawah Aktivasi WCF juga dicentang.
Ini adalah:
* Aktivasi HTTP
* Aktivasi Non-HTTP
Kedua opsi perlu dipilih (kotak centang dicentang).
Aaron D
sumber
2
Jika saya dapat meningkatkan ini lebih dari sekali, saya akan melakukannya, ini membuat saya NUTS, cheers!
Chris W.
4

Saya melihat Anda sudah memecahkan masalah Anda - tetapi untuk anak cucu:

Kami mengalami masalah serupa, dan penangan SVC sudah dipasang dengan benar. Masalah kami adalah permintaan pemrosesan penangan ExtensionlessUrl sebelum mencapai penangan SVC.

Untuk memeriksanya - di Pemetaan Penangan di Manajer IIS di tingkat server web, lihat daftar penangan secara berurutan (ini adalah opsi di sisi kanan). Jika berbagai penangan ExtensionlessUrl muncul di atas penangan SVC, kemudian gerakkan berulang kali ke bawah hingga berada di bagian bawah.

Inigo Surguy
sumber
1

Memverifikasi bahwa direktori Anda telah diubah menjadi Aplikasi adalah IIS Anda.

esylvestre.dll
sumber
1

Saya memiliki masalah yang sama hari ini.

Bagi saya, solusinya adalah masuk ke IIS, klik kanan pada nama Situs Web baru, pilih Properties, ASP.Net, dan ubah versi ASP.Net dari "1.1.4322" (yang telah ditetapkan sebagai default) ke 2.0.50727.

Setelah saya selesai melakukannya, saya dapat mengklik kanan pada file .svc, klik "Browse" dan melihat halaman web Service yang ramah.

Mike Gledhill
sumber
1

Ini juga bisa menjadi masalah setelah mengaktifkan IIS 6 Management Compatibility di windows 10. Mengatur kerangka Aktivasi HTTP di bawah Layanan WCF akan memperbaiki masalah.

Al Nolan
sumber
0

Dalam kasus saya, kesalahan tersebut disebabkan oleh pengaturan pemetaan yang salah di file applicationhost.config (\ System32 \ inetsrv \ config). Untuk beberapa alasan, Visual Studio 2013 rusak saat membuat direktori virtual di IIS. Perbaikannya adalah dengan mengedit bagian situs dalam file secara manual.

pengguna405723
sumber
0

Ada 2 versi .net framework yang diberikan di bawah fitur di add role / features di server 2012

Sebuah. 3.5

b. 4.5

Bergantung pada kerangka yang digunakan, Anda dapat mengaktifkan HTTP-Activation di bawah layanan WCF. :)

Raj kumar
sumber
0

Dalam kasus saya Win 10. file applicationHost.config rusak oleh VS 2012. Dan Anda bisa mendapatkan salinan history dari file ini di bawah C: \ inetpub \ history. Kemudian restart IIS dan berfungsi dengan baik.

phuongdnguyen
sumber
0

Saya harus menambahkan ekstensi .svc ke ekstensi yang diizinkan dalam pengaturan pemfilteran permintaan (sebelumnya mendapat kesalahan 404.7).

masukkan deskripsi gambar di sini

martinoss.dll
sumber
0

Menambahkan sufiks .svc seperti yang diizinkan dalam pemfilteran permintaan melakukan trik bagi saya.

Brian King
sumber
0

Tidak ada solusi di atas yang menyelesaikan kesalahan ini untuk saya. Saya harus mengatur yang berikut ini di web.config:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Saya ingin mengambil kesempatan ini untuk MENGURUTI Microsoft sekali lagi karena membuat kekacauan besar dengan .NET Framework dan membuat kehidupan pengembang begitu sengsara selama ini!

Smyrnian
sumber