สคริปต์ไม่ให้บริการโดยตัวจัดการไฟล์แบบคงที่บน 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.