HTTP 404 เมื่อเข้าถึงไฟล์. svc ใน IIS


87

ฉันเพิ่งสร้างบริการ WCF ซึ่งทำงานได้ดีเมื่อทดสอบจาก Visual Studio 2008 แต่เมื่อฉันปรับใช้โครงการกับ IIS และฉันพยายามเข้าถึงไฟล์. svc จาก IIS ฉันได้รับข้อผิดพลาดนี้:

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

ฉันมีปัญหานี้มา 4 วันแล้ว

ใน Handler Mappings ของ IIS Manager ฉันเห็นสองรายการสำหรับ. svc:

svc-Integrated and svc-ISAPI-2.0

คำตอบ:


75

คุณต้องเพิ่มการแมปสำหรับส่วนขยาย SVC ไปยัง ASP.NET วิธีที่ง่ายที่สุดคือเรียกใช้ServiceModelReg.exe -iจาก C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation คุณอาจต้องเปิดใช้งาน ASP.NET หากยังไม่ได้ดำเนินการ


หากคุณใช้ Windows Server 2012 หรือ 2016 ให้ปฏิบัติตามคำแนะนำเหล่านี้แทน:


คุณลองรีสตาร์ท IIS ในภายหลังหรือไม่
tvanfosson

ตอนนี้คุณมีการทำแผนที่ mime สำหรับ. svc หรือไม่
tvanfosson

ไม่ใช่ mime mapping- Application Extension Mapping ดูmsdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx
Michael Freidgeim

22
สำคัญ: อย่าทำสิ่งนี้บน Server 2012 ที่ติดตั้ง. NET 4.5 มันทำให้ฉันเมาจนฉันเรียกใช้ ServiceModelReg.exe -ua ดูโซลูชัน Server 2012 ได้ที่นี่: stackoverflow.com/questions/11116134/…
Scott Anderson

110

สิ่งที่ใช้ได้ผลสำหรับฉันบน Windows 2012 Server R2:

WCF HTTP 404

ขอบคุณไปที่ "Aaron D"


4
ตัวเลือกที่ง่ายที่สุด
BIDeveloper

นั่นใช้ได้กับฉันบนเดสก์ท็อป Win10, Win8.1 และเซิร์ฟเวอร์ Win2012 :) ขอบคุณ!
Skipper

นั่นใช้ได้กับฉันบนเดสก์ท็อป Win10, Win8.1 และเซิร์ฟเวอร์ Win2012 :) ขอบคุณ!
Skipper

2
ด้วยเหตุผลบางอย่างฉันต้องติดตั้งคุณสมบัติสำหรับ 3.5 และ 4.5 ​​และผ่านทางบรรทัดคำสั่ง: dism /online /enable-feature /featurename:WCF-http-Activation45 /all และ dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan

1
ทำงานบน Sever 2019 เช่นกัน
Zar Shardan

56

ฉันพบคำแนะนำเหล่านี้ในบล็อกโพสต์ที่ระบุขั้นตอนนี้ซึ่งเหมาะกับฉัน (Windows 8 64 บิต):

ตรวจสอบให้แน่ใจว่าในคุณสมบัติของ windows คุณมีตัวเลือก WCF ทั้งสองตัวภายใต้กรอบงาน. Net ไปที่ Control Panel -> Programs and Features -> Turn Windows Features ON / Off -> Features -> Add Features -> .NET Framework XX Features ตรวจสอบให้แน่ใจว่า. Net framework ระบุว่าได้ติดตั้งแล้วและตรวจสอบให้แน่ใจว่าได้เลือกโหนดการเปิดใช้งาน WCF ที่อยู่ข้างใต้แล้ว (ช่องทำเครื่องหมายถูก) และทั้งสองตัวเลือกภายใต้การเปิดใช้งาน WCF จะถูกเลือกด้วย
เหล่านี้คือ:
* การเปิดใช้งาน HTTP
* การเปิดใช้งานที่ไม่ใช่ HTTP
ต้องเลือกทั้งสองตัวเลือก (ทำเครื่องหมายถูกในช่อง)

2
ถ้าฉันสามารถโหวตได้มากกว่าหนึ่งครั้งฉันจะได้รับคะแนนนี้เป็นแรงผลักดันให้ฉัน NUTS ไชโย!
Chris W.

4

ฉันเห็นว่าคุณได้แก้ปัญหาของคุณแล้ว - แต่สำหรับคนรุ่นหลัง:

เรามีปัญหาที่คล้ายกันและตัวจัดการ SVC ได้รับการติดตั้งอย่างถูกต้องแล้ว ปัญหาของเราคือคำร้องขอการประมวลผลตัวจัดการ ExtensionlessUrl ก่อนที่จะไปถึงตัวจัดการ SVC

ในการตรวจสอบสิ่งนี้ - ใน Handler Mappings ใน IIS Manager ที่ระดับเว็บเซิร์ฟเวอร์ให้ดูรายการตัวจัดการตามลำดับ (เป็นตัวเลือกทางด้านขวามือ) หากตัวจัดการ ExtensionlessUrl ต่างๆปรากฏเหนือตัวจัดการ SVC ให้เลื่อนลงซ้ำ ๆ จนกว่าจะอยู่ด้านล่างสุด


1

ตรวจสอบว่าไดเร็กทอรีของคุณถูกแปลงเป็นแอปพลิเคชันคือ IIS ของคุณ


1

ฉันมีปัญหาเดียวกันในวันนี้

สำหรับฉันวิธีแก้ปัญหาคือเข้าไปที่ IIS คลิกขวาที่ชื่อเว็บไซต์ใหม่เลือก Properties ASP.Net และเปลี่ยน ASP.Net เวอร์ชันจาก "1.1.4322" (ซึ่งได้ตั้งไว้เป็นค่าเริ่มต้น) ถึง 2.0.50727

เมื่อฉันทำเสร็จแล้วฉันสามารถคลิกขวาที่ไฟล์. svc คลิกที่ "เรียกดู" และดูหน้าเว็บบริการที่เป็นมิตร


1

นอกจากนี้ยังอาจกลายเป็นปัญหาหลังจากเปิดใช้งานความเข้ากันได้ของการจัดการ IIS 6 ใน windows 10 การตั้งค่าการเปิดใช้งาน HTTP กรอบภายใต้บริการ WCF จะแก้ไขปัญหาได้


0

ในกรณีของฉันข้อผิดพลาดเกิดจากการตั้งค่าการแมปที่ไม่ถูกต้องในไฟล์ applicationhost.config (\ System32 \ inetsrv \ config) ด้วยเหตุผลบางประการ Visual Studio 2013 เสียหายขณะสร้างไดเรกทอรีเสมือนใน IIS การแก้ไขคือแก้ไขส่วนไซต์ในไฟล์ด้วยตนเอง


0

มี 2. net framework เวอร์ชันได้รับภายใต้คุณสมบัติในการเพิ่มบทบาท / คุณสมบัติในเซิร์ฟเวอร์ 2012

ก. 3.5

ข. 4.5

ขึ้นอยู่กับกรอบงานที่ใช้คุณสามารถเปิดใช้งานการเปิดใช้งาน HTTPภายใต้บริการ WCF :)


0

ในกรณีของฉัน Win 10. ไฟล์ applicationHost.config เสียหายโดย VS 2012 และคุณสามารถรับสำเนาประวัติของไฟล์นี้ภายใต้ C: \ inetpub \ history จากนั้นรีสตาร์ท IIS และทำงานได้อย่างถูกต้อง


0

ฉันต้องเพิ่มนามสกุล. svc ลงในส่วนขยายที่อนุญาตในการตั้งค่าการกรองคำขอ (มีข้อผิดพลาด 404.7 มาก่อน)

ป้อนคำอธิบายภาพที่นี่



0

วิธีแก้ไขปัญหาข้างต้นไม่สามารถแก้ไขข้อผิดพลาดนี้ให้ฉันได้ ฉันต้องตั้งค่าสิ่งต่อไปนี้ใน web.config:

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

ฉันอยากจะใช้โอกาสนี้ในการ CURSE Microsoft อีกครั้งสำหรับการสร้างความยุ่งเหยิงขนาดใหญ่กับ. NET Framework และทำให้ชีวิตของนักพัฒนาเป็นเรื่องที่น่าสังเวชเป็นเวลานาน!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.