ข้อผิดพลาด HTTP 404.3 - ไม่พบ "ขณะเรียกดูบริการ wcf บน Windows Server 2008 (64 บิต)


89

ฉันกำลังพัฒนาแอปพลิเคชันที่ใช้. Net Framework 3.5 sp1 และโฮสต์บน windows Server 2008 (64 บิต)

ในขณะที่เรียกดูบริการ wcf (.svc) ในเครื่องทุกสิ่งก็โอเค แต่ในขณะที่เรียกดูด้วย URL โดเมนแบบเต็มก็มีข้อผิดพลาด

ที่อยู่ท้องถิ่นเป็นดังนี้: http: //localhost/MyService.svc

และที่อยู่โดเมนเป็นดังนี้: http://MySite.ir/MyService.svc

โดยวิธีการที่เพจ (.aspx) และไฟล์อื่น ๆ ทำงานได้อย่างถูกต้องทั้งบน localhost และที่อยู่โดเมน

ความคิดใด ๆ ที่จะได้รับการชื่นชม

นี่คือข้อผิดพลาดโดยละเอียด:


ข้อผิดพลาด HTTP 404.3 - ไม่พบ

ไม่สามารถแสดงหน้าที่คุณร้องขอได้เนื่องจากการกำหนดค่าส่วนขยาย หากเพจเป็นสคริปต์ให้เพิ่มตัวจัดการ หากควรดาวน์โหลดไฟล์ให้เพิ่มแผนที่ MIME ข้อมูลข้อผิดพลาดโดยละเอียด

โมดูล: StaticFileModule

การแจ้งเตือน: ExecuteRequestHandler

ตัวจัดการ: StaticFile

รหัสข้อผิดพลาด: 0x80070032

URL ที่ร้องขอ: http://MySite.ir:80/MyService.svc

เส้นทางฟิสิคัล : D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

วิธีการเข้าสู่ระบบ: ไม่ระบุชื่อ

ผู้ใช้เข้าสู่ระบบ ไม่ระบุชื่อ

คำตอบ:


227

กรุณาตรวจสอบให้แน่ใจว่าส่วนประกอบ WCF คุณเปิดใช้งานจากที่นี่

หรือวิธีอื่นที่ง่ายและสะดวกคือไปที่แผงควบคุม -> เปิดหรือปิดคุณสมบัติ Windows -> และตรวจสอบให้แน่ใจว่าคุณได้ทำเครื่องหมายตัวเลือกทั้งหมดตามที่ระบุไว้ในภาพหน้าจอด้านล่าง

ใส่คำอธิบายภาพที่นี่

คุณอาจต้องเปิดใช้งานแต่ละกล่องและยอมรับในกรณีที่คุณได้รับข้อผิดพลาดเมื่อเปิดใช้งานคุณสมบัติทั้งหมดพร้อมกัน


37
.Net Framework 4.5 บริการขั้นสูง -> ตรวจสอบบริการ WCF และ -> การเปิดใช้งาน HTTP ทำเพื่อฉัน!
devHead

3
Windows Server 2012 - จำเป็นต้องมีการเปิดใช้งาน HTTP และการตรวจสอบการแชร์พอร์ต
dibs487

2
ฉันจะเพิ่มคำตอบนี้ให้เปิดใช้งานทีละกล่อง การตรวจสอบทั้งหมดในเวลาเดียวกันอาจล้มเหลว มันเกิดขึ้นใน Windows Server 2012
harveyt

2
คำตอบนี้ควรอยู่ด้านบน
markthewizard1234

3
นี่คือคำตอบที่ถูกต้อง สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้และฉันไม่จำเป็นต้องเพิ่มอะไรด้วยตนเองลงใน IIS Handler Mappings
Anthony

25

ตกลงนี่คือคำตอบ:

ไปที่Handler Mappings | เพิ่ม Handler Manager -> จากนั้นเพิ่มข้อมูลด้านล่าง

ขอเส้นทาง: * .svc

ประเภท: System.ServiceModel.Activation.HttpHandler, System.ServiceModel เวอร์ชัน = 3.0.0.0 วัฒนธรรม = เป็นกลาง PublicKeyToken = b77a5c561934e089

ชื่อ: svc-Integrated


3
สำหรับใครก็ตามที่ต้องการเพิ่มสิ่งนี้ลงในไฟล์ web.config สิ่งนี้ใช้ได้กับฉันในโปรเจ็กต์. NET 4.5: <add name = "svc-Integrated" path = " .svc" verb = " " type = "System.ServiceModel Activation.HttpHandler, System.ServiceModel.Activation, เวอร์ชัน = 4.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr

6
สำหรับฉันการเพิ่มบรรทัดจาก @StefanMohr ไปยัง Web.config นั้นไม่ได้ผล แต่ผมเปลี่ยนpath="*.svc"และverb="*"และการทำงานที่ดี ดังนั้นบรรทัดที่ฉันใช้ในการทำงานคือ: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(เพิ่มที่ configuration / system.webServer / handlers)
Aron Boyette

11

หากใครมีปัญหานี้ใน Windows Server 2012 คำตอบของ Bill Moon ที่นี่แก้ไขให้ฉัน:

"สำหรับ Windows Server 2012 ... จากตัวจัดการเซิร์ฟเวอร์ให้คลิกที่เพิ่มบทบาทและคุณสมบัติเลือกเซิร์ฟเวอร์ที่เหมาะสมจากนั้นเลือกคุณลักษณะภายใต้คุณสมบัติ. NET Framework 4.5 คุณจะเห็นบริการ WCF และภายใต้นั้นคุณจะ ค้นหาการเปิดใช้งาน HTTP "


1
ในเว็บแอปพลิเคชันที่มีอยู่คุณจะต้องทำสิ่งต่อไปนี้หลังจากเพิ่มคุณสมบัติ Windows: - เริ่มต้น inetmgr - เปิด "การแมปตัวจัดการ" - ตรวจสอบว่ามีการแมป svc-ISAPI สำหรับส่วนขยาย * .svc หรือไม่ หากไม่เป็นเช่นนั้นให้ใช้การดำเนินการ "เปลี่ยนกลับเป็นระดับบนสุด" เพื่อคัดลอกจากเว็บไซต์หลัก โปรดทราบว่าสิ่งนี้จะถือว่าการแม็พตัวจัดการแบบกำหนดเองได้รับการกำหนดค่าใน web.config สำหรับแอปพลิเคชันตามปกติใน IIS7 + ถ้าไม่เช่นนั้นคุณจะสูญเสียสิ่งเหล่านั้นเมื่อดำเนินการ "เปลี่ยนกลับเป็นระดับบนสุด"
Berend Engelbrecht

8

ฉันมี windows 10 ในแล็ปท็อปและใช้ Visual Studio 2015 สำหรับการพัฒนา WCF WCF ทำงานได้ดีใน Visual Studio แต่เมื่อโฮสต์ใน IIS ฉันพบข้อผิดพลาดเดียวกัน

ฉันตรวจสอบตัวจัดการ IIS ไม่มีส่วนขยาย svc ดังนั้นฉันจึงพยายามเพิ่มตัวจัดการใหม่ใน IIS ตามที่ Mori แนะนำในคำตอบแรก ฉันไม่พบประเภท "System.ServiceModel.Activation.HttpHandler"

ฉันจึงเปิด "เปิดหรือปิดคุณสมบัติของ windows" และติดตั้งคุณสมบัติตามที่ไฮไลต์ไว้ในภาพหน้าจอ

สิ่งนี้ได้ผลสำหรับฉัน

ใส่คำอธิบายภาพที่นี่


0

หากคุณใช้. Net 4.x PublicKeyToken คือ 31bf3856ad364e35

อย่างไรก็ตามหลังจากโพสต์นี้เกี่ยวกับการติดตั้ง WCF Services อย่างถูกต้องใน IIS ตัวจัดการได้รับการตั้งค่าให้ฉัน


0

ฉันต้องการเพิ่มสิ่งนี้เป็นความคิดเห็นสำหรับคำตอบ แต่ไม่มีตัวแทนเพียงพอสำหรับคำตอบนี้ ฉันพยายามเรียกใช้ ServiceModelReg และ aspnet_regiis.exe ด้วยแฟล็กต่างๆและเพิ่มคุณสมบัติการเปิดใช้งาน HTTP แต่ก็ยังไม่ได้ผล แม้แต่การใช้ Handler mapping UI ใน IIS ก็ไม่ได้ผลเนื่องจากไม่พบ System.ServiceModel.Activation.HttpHandler ในที่สุดสิ่งที่ได้ผลคือการเพิ่มตัวจัดการ Mori กล่าวถึงด้วยตนเองในไฟล์ web.config ของฉัน

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

โครงการของฉันกำลังเรียกใช้. Net 3.5 และ IIS 7.5 บน Windows 7 และ IIS 7.0 บน Win Server 2008 R2


0

ลองยกเลิกการเลือกการเปิดใช้งาน WCF HTTP จากหน้าต่าง "Turn Windows Featured on or off" ( ดูที่นี่ ) และติดตั้งใหม่โดยไปที่

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

และดำเนินการ ServiceModelReg -i

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