IIS'de .svc dosyasına erişirken HTTP 404


87

Yakın zamanda Visual Studio 2008'den test edildiğinde sorunsuz çalışan bir WCF hizmeti oluşturdum. Ancak projeyi IIS'ye dağıttığımda ve IIS'den .svc dosyasına erişmeye çalıştığımda şu hatayı alıyorum:

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

Bu sorunu son 4 gündür yaşıyorum.

IIS Yöneticisi'nin İşleyici Eşlemeleri'nde .svc için iki girdi görebiliyorum:

svc-Integrated and svc-ISAPI-2.0

Yanıtlar:


75

SVC uzantısı için ASP.NET'e bir eşleme eklemeniz gerekir. Bunu yapmanın en kolay yolu ServiceModelReg.exe -i, C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation'dan çalıştırmaktır. Henüz yapmadıysanız, ASP.NET'i de etkinleştirmeniz gerekebilir.


Windows Server 2012 veya 2016 kullanıyorsanız, bunun yerine şu talimatları izleyin:


Daha sonra IIS'yi yeniden başlatmayı denediniz mi?
tvanfosson

Artık .svc için bir mime eşlemeniz var mı?
tvanfosson

Bu, mime eşlemesi değil - Uygulama Uzantısı Eşlemesi. bkz. msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim

22
Önemli: Bunu .NET 4.5 yüklü Sunucu 2012'de yapmayın. Daha sonra ServiceModelReg.exe -ua çalıştırana kadar beni mahvetti. Sunucu 2012 çözümü için buraya bakın: stackoverflow.com/questions/11116134/…
Scott Anderson

110

Benim için ne işe yaradı, Windows 2012 Server R2'de:

WCF HTTP 404

Teşekkürler "Aaron D" ye gider


4
Şimdiye kadar en kolay seçenek.
BIDeveloper

Bu benim için Win10, Win8.1 masaüstü ve Win2012 sunucusunda çalıştı :) Teşekkürler!
Kaptan

Bu benim için Win10, Win8.1 masaüstlerinde ve Win2012 sunucusunda çalıştı :) Teşekkürler!
Kaptan

2
Bazı nedenlerden dolayı, özelliği dism /online /enable-feature /featurename:WCF-http-Activation45 /alldism /online /enable-feature /featurename:WCF-http-Activation /all
3.5'in

1
Sever 2019'da da çalışıyor
Zar Shardan

56

Bulduğum bir blog yayınında bu talimatları (Windows 8, 64-bit) benim için çalıştı bu adımı, belirtilen:

Windows özelliklerinde, .Net çerçevesi altında her iki WCF seçeneğinin de işaretli olduğundan emin olun. Bu yüzden Denetim Masası -> Programlar ve Özellikler -> Windows Özelliklerini Aç / Kapat -> Özellikler -> Özellik Ekle -> .NET Framework XX Özellikleri'ne gidin. .Net çerçevesinin yüklü olduğunu söylediğinden emin olun ve altındaki WCF Etkinleştirme düğümünün seçildiğinden (onay kutusu işaretli) ve WCF Etkinleştirme altındaki her iki seçeneğin de işaretlendiğinden emin olun.
Bunlar:
* HTTP Etkinleştirme
* HTTP Olmayan Aktivasyon
Her iki seçeneğin de seçilmesi gerekir (işaretli kutu işaretli).

2
Buna birden fazla oy verebilseydim, bu beni NUTS tahrik ediyordu, şerefe!
Chris W.

4

Görüyorum ki probleminizi zaten çözmüşsünüz - ama gelecek nesil için:

Benzer bir sorun yaşadık ve SVC işleyicisi zaten doğru bir şekilde kurulmuştu. Bizim sorunumuz, ExtensionlessUrl işleyicisinin istekleri SVC işleyicisine ulaşmadan önce işlemesiydi.

Bunu kontrol etmek için - web sunucusu düzeyinde IIS Yöneticisi'ndeki İşleyici Eşlemeleri'nde, sırayla işleyiciler listesini görüntüleyin (bu, sağ tarafta bir seçenektir). Çeşitli ExtensionlessUrl işleyicileri, SVC işleyicilerinin üzerinde görünüyorsa, altta oluncaya kadar bunları tekrar tekrar aşağı taşıyın.


1

Dizininizin bir Uygulamaya dönüştürüldüğünü doğrular, sizin IIS'nizdir.


1

Bugün aynı sorunu yaşadım.

Benim için çözüm, IIS'ye girmek, yeni Web Sitesi adına sağ tıklamak, Özellikler, ASP.Net'i seçmek ve ASP.Net sürümünü "1.1.4322" den (varsayılan olarak ayarlanmıştır) değiştirmekti. 2.0.50727'ye kadar.

Bunu yaptıktan sonra, .svc dosyasına sağ tıklayıp, "Gözat" a tıklayabilir ve kolay hizmet web sayfasını görebilirdim.


1

Bu, Windows 10'da IIS 6 Yönetim Uyumluluğunu etkinleştirdikten sonra da bir sorun haline gelebilir. WCF Hizmetleri altında HTTP Etkinleştirme çerçevesini ayarlamak sorunu çözecektir.


0

Benim durumumda, hataya applicationhost.config (\ System32 \ inetsrv \ config) dosyasındaki yanlış eşleme ayarları neden oldu. Bazı nedenlerden dolayı, Visual Studio 2013, IIS'de sanal bir dizin oluştururken onu bozdu. Düzeltme, dosyadaki siteler bölümünü manuel olarak düzenlemekti.



0

Benim durumumda Win 10. applicationHost.config dosyası VS 2012 tarafından bozulmuş. Ve bu dosyanın kopyasını C: \ inetpub \ history altında alabilirsiniz. Ardından IIS'yi yeniden başlatın ve düzgün çalışıyor.


0

İstek filtreleme ayarlarında izin verilen uzantılara .svc uzantısını eklemem gerekiyordu (daha önce 404.7 hata aldım).

görüntü açıklamasını buraya girin


0

.Svc sonekini istek filtrelemede izin verildiği şekilde eklemek benim için hile yaptı.


0

Yukarıdaki çözümlerden hiçbiri bu hatayı benim için çözmedi. Aşağıdakileri web.config dosyasında ayarlamak zorunda kaldım:

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

.NET Framework ile bu kadar büyük bir karmaşa yarattığı ve geliştirici hayatlarını bu kadar uzun süre bu kadar perişan hale getirdiği için bu fırsatı bir kez daha CURSE Microsoft'u kullanmak istiyorum!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.