สคริปต์ไม่ให้บริการโดยตัวจัดการไฟล์แบบคงที่บน IIS7.5


130

ฉันเพิ่งพยายามปรับใช้เว็บแอปพลิเคชันตัวแรกกับ IIS บนโน้ตบุ๊ก Windows 7 Home Premium หลังจากสร้างแอปพลิเคชันแล้วฉันต้องเปลี่ยนเป็น Classic App Pool จากนั้นตั้งค่าพูลนั้นสำหรับเฟรมเวิร์ก 4.0 ตอนนี้ฉันได้รับข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาด HTTP 404.17 - ไม่พบเนื้อหาที่ร้องขอดูเหมือนจะเป็นสคริปต์และจะไม่ได้รับการบริการโดยตัวจัดการไฟล์แบบคงที่

URL ที่ร้องขอคือhttp: // localhost: 80 / pvmms / default.aspx

ฉันกลัวว่า Googling ที่กว้างขวางไม่ได้ให้อะไรที่ชัดเจนหรือแน่นอนเพียงพอสำหรับฉันที่จะทำงานด้วยและฉันก็หันไปหาผู้เชี่ยวชาญตามปกติ

แก้ไข: ฉันสงสัยว่านี่เป็นเพราะไม่มีการแมปตัวจัดการกรอบ 4.0 สำหรับไฟล์. aspx อย่างไรก็ตาม aspnet_regiis ยังให้นิ้วผู้ดูแลระบบของฉันและบอกว่าฉันต้องการสิทธิ์ผู้ดูแลระบบเพื่อเรียกใช้

แก้ไข # 2: ฉันลงทะเบียนเฟรมเวิร์กทั้งหมด (2 & 4, 32 และ 64) และตอนนี้ใช้งานได้ทั้งหมด ฉันพบสิ่งนี้โดยการเพิ่มแผนผังสคริปต์สำหรับ.aspxaspnet_isapi และ voila ด้วยตนเอง ฉันไม่เข้าใจว่าทำไมการติดตั้งเฟรมเวิร์กไม่ทำเช่นนี้เว้นแต่ว่าหน่วยความจำของฉันจะล้มเหลวและฉันเปิดใช้งาน IIS หลังจากติดตั้ง VS


หรือทำใน web.config ตามที่อธิบายไว้ที่นี่stackoverflow.com/questions/2061678/…
— bizl

คำตอบ:


120

อาจจะสายเกินไป แต่บ่อยครั้งที่คุณไม่จำเป็นต้องวิ่ง

aspnet_regiis.exe -i  

หลังจากติดตั้ง asp.net บางทีฉันอาจจะทำมันต่อไป


17
มีเครื่องมือการลงทะเบียน IIS สองรายการที่มาพร้อมกับ. NET Framework; หนึ่งสำหรับระบบมาตรฐานและอีกระบบหนึ่งสำหรับระบบ 64 บิต เครื่องมือสำหรับระบบ 64 บิตที่อยู่ในไดเร็กทอรี Framework64 ของไดเร็กทอรี Microsoft.NET ภายในโฟลเดอร์ Windows ตัวอย่างเช่น C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 จะมีเครื่องมือการลงทะเบียน IIS
— Matthew Lock

3
the command is not recognized as an internal or external commandถ้าคุณได้รับข้อผิดพลาด เรียกใช้ในพรอมต์คำสั่งของนักพัฒนา
— rockXrock

1
ฉันต้องทำสิ่งนี้สำหรับ 2.0 framework ในโฟลเดอร์ Framework64 เหมือนสิ่งที่ @matthew Lock พูด
— codingNightmares

นอกจากนี้โปรดทราบว่าหากคุณต้องรัน 2.0 และ 4.0 ให้รัน 2.0 ก่อน
— SouthShoreAK

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (สำหรับ v2.0 บน x64) - เปลี่ยน Framework64 เป็น Framework สำหรับ x86 เปลี่ยน v2. * เป็น v4. * สำหรับ v4 (เรียกดูโฟลเดอร์หลักสำหรับชื่อที่แน่นอน)
— JohnLBevan

63

นอกเหนือจากข้างต้นหากคุณต้องการการสนับสนุน WCF คุณอาจต้องเรียกใช้สิ่งนี้:

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

แทนที่ v3.0 เป็นเวอร์ชันเฟรมเวิร์กปัจจุบันของคุณ


1
โปรดทราบว่าสำหรับคนอื่น ๆ ฉันคิดว่าบนเว็บแอปที่ใช้แอป 4.0 คุณจะต้องเรียกใช้ aspnet_regiis อีกครั้ง
— Tim Gabrhel

1
สำหรับ. Net 4 อยู่ในไดเร็กทอรีหลัก เช่น C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
— bytedev

57

ฉันพบข้อผิดพลาดนี้จาก IIS 8.5 เมื่อพยายามเข้าถึงบริการ WCF ที่ฉันเขียน ปรากฎว่าเซิร์ฟเวอร์ไม่ได้เปิดใช้งานคุณสมบัติการเปิดใช้งาน WCF HTTP ทำเครื่องหมายในช่องและคลิกผ่านวิซาร์ด iisreset เริ่มทำงาน

แผงคุณสมบัติของ Windows


1
สิ่งนี้ใช้ได้กับฉันกับ IIS 8.5 และ Windows 8.1 ฉันต้องการเปิดใช้งาน ASHX เพื่อรับข้อผิดพลาดที่อธิบายไว้ในคำถาม (HTTP 404.17)
— Sergio A.

ขอบคุณ! สิ่งนี้ได้ผลสำหรับฉัน อย่างไรก็ตามในกรณีของฉันฉันต้องเปิดใช้งาน. NET 2.0 เนื่องจากฉันใช้บริการเว็บเก่า
— Stefan Vasiljevic

นี่เป็นโพสต์เก่า แต่โซลูชันของคุณบันทึกเบคอนของฉัน ฉันจะไม่พบสิ่งนี้ในล้านปี ... ที่อื่น ขอบคุณ.
— Joe Schmucker

48

หากคุณใช้ iis 7.5.2

เพียงไปที่ตัวจัดการ IIS เปิดคุณสมบัติเว็บไซต์ของคุณ

คุณจะเห็นส่วน 'Handler Mappings' ที่นั่นเพียงไปที่ส่วนนั้นและค้นหา 'staticFile'

ส่วนใหญ่อาจเป็นไฟล์สุดท้ายในรายการ

จากนั้นคลิกขวาและเลือก 'เปลี่ยนกลับเป็นผู้ปกครอง'

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


2
ตามคำตอบของ Adi: คอมมานโดนี้ทำทุกอย่าง: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
— JDC

ขอบคุณ @Kumar สำหรับเคล็ดลับ! IIS> Sites> acme.com> Handler Mappings> เปลี่ยนกลับเป็น Parent ในกรณีของฉันฉันทำกับโดเมนทั้งหมดไม่ใช่แค่ "staticFile" สิ่งนี้ใช้ได้ผลสำหรับฉันและง่ายกว่า / ดีกว่าการรันไฟล์ปฏิบัติการ (aspnet_regiis.exe) เหตุใดข้อเสนอแนะนี้จึงไม่เกิดขึ้นอีก =)
— jiminy

เคล็ดลับที่ยอดเยี่ยม ... แต่นักแสดงโชว์นั้นมาจากไหน? ฉันจำไม่ได้ว่าเคยพบใน IIS เวอร์ชันก่อนหน้านี้ ... !
— Mike Gledhill

25

ฉันมีปัญหานี้กับ Windows Server 2012 ที่มี ASP .NET 4.5 คุณไม่สามารถใช้ aspnet_regiis.exe ได้และต้องติดตั้ง ASP .NET 4.5 ผ่านตัวช่วยเพิ่มบทบาทและคุณสมบัติ:

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

คุณจะพบรายการเมนู "เพิ่มบทบาทและคุณลักษณะ" ในเมนู "จัดการ" ที่มุมขวาของตัวจัดการเซิร์ฟเวอร์


1
รายการเมนู "เพิ่มบทบาทและคุณลักษณะ" คุณสามารถพบได้ในเมนู "จัดการ" ที่มุมขวาของผู้จัดการเซิร์ฟเวอร์
— Alexander Trofimov

16

ข้อความแสดงแทน

ควรตรวจสอบตัวเลือกนี้ฉันคิดว่า


1
เพียงแค่ตั้งค่าว่าจะแสดงเนื้อหาแบบคงที่ได้หรือไม่ ปัญหาของฉันคือคำร้องขอสคริปต์ถูกแมปกับเนื้อหาคงที่ ถ้าฉันปิด IIS จะไม่พยายามเซิร์ฟเวอร์เพจด้วยซ้ำเพียงแค่เว้นว่างไว้
— ศ

16

ฉันแก้ไขปัญหานี้โดยการเปิดใช้งาน WCF Services

Programs and Features > NET Framework 4.5 Services > WCF Services> HTTP Activation node

แต่คุณต้องยอมรับว่าการตั้งค่า IIS ทั้งหมดนี้กำหนดค่า / เดา / ทดลองใช้และดู / ลองใช้ / ลองใช้เวลา 4 หรือ 5 วันของเราในการพยายามหาวิธีแก้ปัญหาเกี่ยวกับแนวทางเป็นเรื่องที่สมบูรณ์และเป็นเรื่องตลก

แน่นอน 'IIS' เป็นเคล็ดลับความมั่นใจที่ใหญ่ที่สุดที่เคยเล่นกับมนุษย์จนถึงปัจจุบัน


1
สิ่งที่คุณต้องทำคือเปิดใช้งานคุณสมบัติเนื้อหาคงสำหรับ IIS สิ่งนี้ไม่เกี่ยวข้องกับ WCF
— ProfK

1
@ProfK ขึ้นอยู่กับสาเหตุที่คุณได้รับข้อผิดพลาดนั้นสาเหตุที่แตกต่างกันทำให้เกิดข้อผิดพลาดเดียวกัน - หากคุณได้รับข้อผิดพลาดจากไฟล์ SVC ที่กำหนดค่าให้ใช้ WCF ข้างต้นจะแก้ไขได้
— JohnLBevan

ฮ่า ๆ เห็นด้วยอย่างยิ่งการย้ายไซต์หลายแห่งและเพิ่งเห็นข้อผิดพลาด 5 ประเภทที่แตกต่างกันทั้งหมดโดยไม่มีข้อความแสดงข้อผิดพลาดจริงหรือเป็นความลับมาก ตัวอย่าง "ไม่สามารถแสดงเพจได้เนื่องจากเกิดข้อผิดพลาดภายในเซิร์ฟเวอร์" หมายความว่าคุณได้เพิ่มชนิด mime เนื้อหาแบบคงที่ที่มีอยู่แล้ว
— ไมค์เนลสัน

15

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันเพิ่งมีแอปพลิเคชั่น 3.5 บนเครื่อง Windows 8 ที่สร้างขึ้นใหม่และฉันยังคงได้รับสิ่งนี้หลังจากนั้นaspnet_regiis -iruและปรากฎว่าเป็น ASP.NET 3.5 ไม่ได้ทำเครื่องหมายในคุณสมบัติการพัฒนาแอปพลิเคชัน (ชื่อเสียงไม่เพียงพอที่จะโพสต์ภาพ)


2
@bicbmx สำหรับภาพนี้คุณสามารถแชร์ลิงก์หลังจากอัปโหลดที่ใดที่หนึ่งเช่นimgur.com
— superjos

12

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


8

ลงทะเบียน asp.net อีกครั้ง .... จะแก้ปัญหาได้
ป้อนคำอธิบายภาพที่นี่

ไปที่ Visual Studio Command Prompt
และลงทะเบียน asp.net เป็น windows \ microsoft.net \ Framework [.Net version num] \ aspnet_regiis.exe -i


2
aspnet_regiis.exe -i ตอบว่า "ระบบปฏิบัติการเวอร์ชันนี้ไม่รองรับตัวเลือกนี้" ทำไม IIS ถึงปวดตูด?
— Paul McCarthy

5

ฉันมีปัญหาเดียวกันนี้ในเครื่อง windows 8 ที่ฉันกำลังตั้งค่า ฉันติดตั้ง vs2012 ก่อน vs2010 ซึ่งติดตั้ง. NET framework 4.5 ฉันมีแอพพูลของฉันที่ทำงานใน 4.0 ฉันแน่ใจว่าฉันได้ลงทะเบียนแอสเน็ตสำหรับ 4.0 โดยใช้ aspnet_regiis -i นั่นยังไม่ได้ทำเคล็ดลับ จากนั้นฉันก็เปิดคุณลักษณะของ Windows และสังเกตว่า 4.5 ได้เพิ่มชุดที่เรียกว่า ".NET Framework 4.5 Advanced Services" ฉันเปิดใช้งานโหนดบริการ WCF และลูกของโหนดจากนั้นปลายทาง svc ของฉันทำงานได้อย่างถูกต้อง หวังว่านี่จะช่วยให้ผู้ที่กำลังจะย้ายไปใช้ Windows 8


เซิร์ฟเวอร์ 2012, IIS8 ที่นี่ด้วยขอบคุณสำหรับตัวชี้ที่ทำให้ฉันไปในทิศทางที่ถูกต้อง สำหรับผู้ที่สนใจฉันจำเป็นต้องเปิดบทบาท Application Server และ Web Server Role ฉันพบข้อมูลที่ต้องการที่นี่: msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
— John

3

ฉันสะดุดกับคำถามนี้เมื่อพบปัญหาเดียวกัน สาเหตุหลักของปัญหาคือพูลแอปที่กำหนดค่าไม่ถูกต้อง มันถูกตั้งค่าเป็น 2.0 โดยไม่ได้ตั้งใจเมื่อจำเป็นต้องตั้งค่าเป็น 4.0 คำตอบที่ลิงค์ต่อไปนี้ช่วยให้ฉันค้นพบปัญหานี้: http://forums.iis.net/t/1160143.aspx


2

ผมมีปัญหาเหมือนกัน. เมื่อฉันเพิ่ม feaute เนื้อหาแบบคงที่สำหรับ IIS มันก็ใช้ได้ดี


2

อีกวิธีหนึ่งที่เป็นไปได้ที่ฉันพบว่ามีข้อความแสดงข้อผิดพลาดเดียวกัน

เมื่อพยายามตั้งค่าเว็บแอปพลิเคชัน. NET 4.0 ไปยังพูลแอปพลิเคชันใหม่ฉันได้รับข้อผิดพลาดแปลก ๆ นี้โดยบอกว่ากำลังพยายามประมวลผลไฟล์ aspx ของฉันด้วยตัวจัดการไฟล์แบบคงที่ซึ่งไม่สมเหตุสมผล

ด้วยเหตุผลบางประการ ISAPI สำหรับ. NET 4.0 ถูกตั้งค่าเป็นปิดใช้งานในพื้นที่ข้อ จำกัด ISAPI และ CGIของระดับเซิร์ฟเวอร์ในตัวจัดการ IIS การตั้งค่าให้เปิดใช้งานเป็นสิ่งที่จำเป็นทั้งหมดอย่างไรก็ตามตัวจัดการ IIS 7.5 นั้นซับซ้อนและยากที่จะติดตามฉันใช้เวลานานในการคิดออก

ฉันคาดเดาว่าเนื่องจากเป็นแอปพลิเคชัน 4.0 ที่ไม่สามารถประมวลผลโดย 4.0 Engine ได้จึงใช้ตัวจัดการไฟล์แบบคงที่โดยค่าเริ่มต้น


2

สำหรับคนอื่นที่อ่านสิ่งนี้:

สิ่งนี้อาจเกิดขึ้นได้หากเวอร์ชัน. Net ที่คุณลงทะเบียนไม่ใช่เวอร์ชันที่เลือกภายใต้ 'การตั้งค่าพื้นฐาน' ของกลุ่มแอปพลิเคชันที่แนบมากับเว็บไซต์ของคุณ ตัวอย่างเช่นพูลแอปพลิเคชันไซต์ของคุณได้เลือก. Net v2.0 ไว้ แต่คุณลงทะเบียน v4.0


2

สำหรับ Windows 10 / Framework 4.7 ฉันต้องเปิดใช้งาน HTTP Activation ด้วยวิธีการต่อไปนี้:

  1. แผงควบคุม> โปรแกรมและคุณลักษณะ> เปิดหรือปิดคุณลักษณะของ Windows
  2. ภายใต้. NET Framework 4.7 Advanced Services ขยาย WCF Services เลือกตรวจสอบการเปิดใช้งาน HTTP และสิ่งอื่น ๆ ที่คุณต้องการเมื่อทำงานกับ WCF
  3. คลิกตกลงและปล่อยให้การติดตั้งทำสิ่งนั้นจากนั้นเปิดพรอมต์คำสั่งการดูแลระบบและออกคำสั่ง IISRESET


0

เมื่อใช้ตัวจัดการ IIS ฉันพบว่ามีการแมปไฟล์. aspx (ภายใต้ "Handler Mappings") กับ ISAPI 2.0 - แม้ว่าจะเคยติดตั้ง ASP.NET 4.5 มาแล้วก็ตาม การแก้ไขให้ชี้ (ด้วย) ไปยังไฟล์ปฏิบัติการสำหรับ ISAPI 4.0 64 บิตแก้ไขปัญหาได้

พบไฟล์ปฏิบัติการใน% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll


0

ฉันได้รับข้อความนี้สำหรับแอปพลิเคชันบน iis 7.5 ที่มีพูลแอปคลาสสิกที่กำหนดให้กับ. net 2.0 ฉันต้องไปที่ Handler Mappings และเพิ่มแผนที่สคริปต์สองรายการซึ่งทั้งสองเหมือนกันยกเว้นชื่อ ชื่อหนึ่งคือ svc-ISAPI-2.0-64 อีกชื่อหนึ่งคือ svc-ISAPI-2.0 เส้นทางการร้องขอคือ. svc และปฏิบัติการได้คือ% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll ฉันรีสตาร์ท iis และทุกคนมีความสุข


0

หนึ่งในสถานการณ์ที่เลวร้ายที่สุดที่ฉันเพิ่งแก้ไขคือ - มีรายการที่ขัดแย้งกันใน Web.config

บนเครื่องท้องถิ่นของฉันฉันไม่มีนามสกุล. woff ที่ลงทะเบียนใน IIS ดังนั้นฉันจึงเพิ่มโดยใช้ Web.config แต่บนเซิร์ฟเวอร์การผลิต. woff มีการลงทะเบียนประเภท mime สิ่งนี้ทำให้เกิดความขัดแย้งในระดับแอปพลิเคชัน

ส่วนที่ตลกคือไม่มีข้อผิดพลาดที่บันทึกไว้สำหรับสิ่งนี้ แค่งานเดา (ครั้งแรกแน่นอน)

ดังนั้นวิธีแก้ปัญหาสำหรับฉันคือการลบและ / หรือองค์ประกอบจาก web.config


0

ฉันมีปัญหาเดียวกันฉันเพิ่งเปลี่ยนเวอร์ชันกรอบเป้าหมายบนเว็บไซต์เป็นเวอร์ชันที่พัฒนาขึ้นเช่นเดียวกันใน IIS สิ่งนี้ช่วยแก้ปัญหาของฉันได้ หวังว่านี่จะช่วยได้ ...

ขอบคุณ


0

อาจมีหลายเหตุผลในกรณีของฉันภายใต้ Application pool-> advance setting-> Enable 32 bit application (ควรเป็นจริง) มันถูกตั้งค่าเป็นเท็จก่อนหน้านี้


-1

ไปที่ไดเร็กทอรีสถาปัตยกรรม. Net และ CPU ของคุณโดยใช้ CMD หรือ powershell

ป้อนคำสั่งนี้: aspnet_regiis –r


ใน Windows Server 2008 R2 กล่าวว่า: "ตัวเลือกนี้ไม่ได้รับการสนับสนุนบน Windows Vista"
— CSharper

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