ไม่สามารถให้บริการ WCF ใน IIS บน Windows 8


199

เมื่อฉันพยายามให้บริการ WCF บน IIS ในเครื่อง Windows 8 ฉันได้รับข้อผิดพลาดที่รู้จักกันดี

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

งานเก่าไปรอบ ๆ ก็จะเรียกใช้aspnet_regiis -iแต่คำสั่งนี้ดูเหมือนว่าจะได้รับการคัดค้านใน Windows 8 This option is not supported on this version of the operating system. (...)ยอมตอบสนอง

สิ่งที่จะหลีกเลี่ยง

(ฉันเปิดใช้งานaspxหน้าเว็บปกติเรียบร้อยแล้วดังนั้นค่า IIS ส่วนใหญ่จึงดูดี)


สำหรับข้อมูลเพิ่มเติมเกี่ยวกับaspnet_regiis -iคำสั่งสำหรับผู้ใช้ pre-Windows 8 โปรดดูที่ลิงก์นี้: aspsnippets.com/Articles/…
David

คำตอบ:


406

ดูเหมือนจะเป็นเกมง่ายๆ ควรเปิดใช้งานบริการ WCF โดยใช้Programs and Features -> Turn Windows features on or offในแผงควบคุม ไป.NET Framework Advanced Services -> WCF Servicesและเปิดใช้งานHTTP Activationตามที่อธิบายไว้ในบล็อกโพสต์เกี่ยวกับเรื่องนี้ mdsn

จากพรอมต์คำสั่ง (ในฐานะผู้ดูแลระบบ) คุณสามารถเรียกใช้:

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

หากคุณได้รับข้อผิดพลาดให้ใช้ด้านล่าง

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

6
ฉันใช้เวลาดูในตัวจัดการ IIS ฉันคิดว่าตัวจัดการ IIS ควรมีไอคอนกำกับหรือบอกผู้ใช้เกี่ยวกับ. NET Framework Advnaced Services
Tony_Henrich

การใช้พรอมต์คำสั่งฉันได้รับข้อผิดพลาด "การดำเนินการเสร็จสมบูรณ์ แต่ไม่ได้เปิดใช้งานคุณลักษณะการทำงานของ WCF-HTTP- การเปิดใช้งานคุณสมบัติหลักที่ต้องการอาจไม่ได้เปิดใช้งานคุณสามารถใช้ตัวเลือก / enable-feature / all จากรายการต่อไปนี้หากคุณสมบัติหลักเปิดใช้งานอยู่แล้วให้อ้างถึงไฟล์บันทึกสำหรับการวินิจฉัยเพิ่มเติม ". ฉันใช้วิธี GUI แทนเพื่อที่จะได้รู้ว่าฉันกำลังเปิดอะไรและมันทำงานได้ดี
Ben Adams

5
ผมได้เหมือนกัน "เป็นคุณลักษณะที่จำเป็นของผู้ปกครองอาจจะไม่ได้เปิดใช้งาน" ข้อผิดพลาดขณะที่เบนเดอร์สันและพยายามเสนอแนะในข้อผิดพลาด (เพิ่ม/allอาร์กิวเมนต์) DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45ซึ่งจากนั้นจะทำงานได้ดี:
ทรอย Gizzi

1
คุณเป็นคนที่ยอดเยี่ยมมาก คุณสามารถเพิ่ม (เป็นรายละเอียดเล็ก ๆ ) ที่สามารถทำได้ขึ้นอยู่กับรุ่น. Net Framework เช่นเดียวกับใน.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18

นี่คือการช่วยชีวิต โซลูชันออนไลน์ส่วนใหญ่สำหรับปัญหานี้ให้คุณเปิดใช้งาน. Net 3.5 Framework ภายใต้คุณลักษณะของเว็บเท่านั้น นั่นไม่เพียงพอ คุณต้องทำตามขั้นตอนที่กล่าวถึงที่นี่
markaaronky

95

สำหรับ Windows Server 2012 การแก้ปัญหาคล้ายกับของ faester (ดูด้านบน) จากโปรแกรมจัดการเซิร์ฟเวอร์คลิกเลือกเซิร์ฟเวอร์ที่เหมาะสมแล้วเลือกAdd roles and features Featuresภายใต้.NET Framework 4.5 Featuresคุณจะเห็นและอยู่ภายใต้การที่คุณจะได้พบกับWCF ServicesHTTP Activation


ขอบคุณสำหรับสิ่งนี้ ! แต่วิธีการเกี่ยวกับ. Net 4 คุณคิดว่าการเปิดใช้งานคุณสมบัตินี้จะทำเช่นเดียวกันสำหรับ. Net v4.0 หรือไม่
Aladdin Gallas

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

13

โปรดทำสองขั้นตอนต่อไปนี้บน IIS 8.0

เพิ่มประเภท MIME ใหม่ & HttpHandler

  1. ส่วนขยาย: .svc, ชนิด MIME: application / octet-stream

  2. เส้นทางการร้องขอ: * .svc, ประเภท: System.ServiceModel.Activation.HttpHandler, ชื่อ: svc-Integrated


ทางออกที่ดีที่สุดสำหรับการติดตั้ง Windows 7 เก่าของฉันที่ไม่สามารถเปิดใช้งาน - .Net 3.5 (การเปิดใช้งาน Http & Non-Http) และ WAS บอบบางเกินไปที่จะติดตั้งระบบปฏิบัติการใหม่อีกครั้ง
user919426

เป็นเรื่องน่ารู้เกี่ยวกับวิธีนี้โดยเฉพาะเมื่อสร้างและเพิ่มเครื่องมือจัดการของคุณเอง อย่างไรก็ตามหากคุณใช้ 'เปิดและปิดคุณสมบัติ Windows' คุณจะได้รับนามสกุลไฟล์ที่รู้จักมากที่สุดซึ่งจะช่วยให้คุณประหยัดเวลาในการเพิ่มแต่ละไฟล์แยกกัน (และค้นหารายละเอียดที่ถูกต้องทั้งหมด)
Daniel Hollinrake


3

นี่เป็นโซลูชันเดียวกับโซลูชันของ faester และ Bill Moon แต่นี่คือวิธีที่คุณใช้กับ PowerShell:

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

แน่นอนว่าไม่มีอะไรหยุดคุณจากการโทรDISMจาก PowerShell เช่นกัน


ดีมาก. ขอบคุณสำหรับข้อมูล
Rod Hartzell

-1

คุณสามารถเพิ่มรหัสนี้ใน web.config ใน 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>

คุณสามารถเปลี่ยนนามสกุลไฟล์ด้วยนามสกุลไฟล์ของคุณ


สวัสดี @malik - คุณช่วยให้ชัดเจนหรือไม่ว่าส่วนขยายของไฟล์การแมปสามารถทำให้ svc-endpoints ทำงานได้อย่างไร
Faester

หากฉันเข้าใจถูกต้องคุณสามารถเปลี่ยนนามสกุลได้ตามต้องการ คุณสามารถดูได้จากfeedforall.com/mime-types.htmแต่คุณจะพูดอย่างอื่นขอโทษฉันไม่เข้าใจ
malik masis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.