Tập lệnh không được phục vụ bởi trình xử lý tệp tĩnh trên IIS7.5


130

Tôi vừa thử triển khai ứng dụng web đầu tiên của mình lên IIS trên máy tính xách tay Windows 7 Home Premium. Sau khi tạo ứng dụng, tôi phải đổi sang Nhóm ứng dụng cổ điển, sau đó đặt nhóm đó cho khung 4.0. Bây giờ tôi nhận được lỗi sau:

Lỗi HTTP 404.17 - Không tìm thấy Nội dung được yêu cầu có vẻ là tập lệnh và sẽ không được trình xử lý tệp tĩnh phục vụ.

URL được yêu cầu là http: // localhost: 80 / pvmms / default.aspx

Tôi sợ Googling rộng rãi đã không mang lại điều gì rõ ràng hoặc đủ rõ ràng để tôi làm việc cùng và như thường lệ tôi đã chuyển sang các chuyên gia.

EDIT: Tôi nghi ngờ điều này là do không có ánh xạ xử lý khung 4.0 cho các tệp .aspx. Tuy nhiên, aspnet_regiis thậm chí còn cung cấp cho người dùng quản trị viên của tôi ngón tay và nói rằng tôi cần quyền quản trị để chạy nó.

EDIT # 2: Tôi đã đăng ký tất cả các khung (2 & 4, 32 và 64) và tất cả đều hoạt động. Tôi đã tìm thấy điều này bằng cách thêm thủ công bản đồ tập lệnh cho .aspxaspnet_isapi và voila. Tôi không hiểu tại sao cài đặt khung không làm được điều này, trừ khi bộ nhớ của tôi không hoạt động và tôi chỉ bật IIS sau khi cài đặt VS.


Hoặc làm điều đó trong web.config như được giải thích ở đây stackoverflow.com/questions/2061678/ trên
bizl

Câu trả lời:


120

Có lẽ bây giờ đã quá muộn, nhưng thường xuyên hơn là bạn không cần phải chạy

aspnet_regiis.exe -i  

sau khi cài đặt asp.net. Có lẽ tôi sẽ làm điều đó ngay bây giờ.


17
Có hai Công cụ đăng ký IIS đi kèm với .NET Framework; một cho hệ thống tiêu chuẩn và một cho hệ thống 64 bit. Công cụ dành cho các hệ thống 64 bit nằm trong thư mục Framework64 của thư mục Microsoft.NET bên trong thư mục Windows; ví dụ: C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 sẽ chứa Công cụ đăng ký IIS.
Khóa Matthew

3
Nếu bạn nhận được lỗi the command is not recognized as an internal or external command. Chạy nó trong Dấu nhắc lệnh dành cho nhà phát triển.
rockXrock

1
Tôi đã phải làm điều này cho khung 2.0 trong thư mục Framework64. giống như những gì @matthew Lock đã nói
mã hóaNightmares

Cũng cần lưu ý, nếu bạn phải chạy 2.0 và 4.0, hãy chạy 2.0 trước.
SouthShoreAK

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (cho v2.0 trên x64) - thay đổi Framework64 thành Framework cho x86, thay đổi v2. * Thành v4. * Cho v4 (duyệt đến thư mục chính để biết tên chính xác)
JohnLBevan

63

Ngoài ra, nếu bạn cần hỗ trợ WCF, bạn có thể cần chạy nó:

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

Thay thế v3.0 thành bất cứ phiên bản khung hiện tại nào của bạn.


1
Lưu ý với những người khác, tôi nghĩ trên các ứng dụng web sử dụng nhóm ứng dụng 4.0, bạn sẽ cần chạy lại aspnet_regiis
Tim Gabrhel

1
Đối với .Net 4 của nó trong thư mục cha. Ví dụ: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev

57

Tôi đã gặp lỗi này từ IIS 8.5 khi cố gắng truy cập dịch vụ WCF mà tôi đã viết. Hóa ra máy chủ không bật tính năng Kích hoạt HTTP WCF. Kiểm tra các hộp và nhấp qua trình hướng dẫn, iisreset, bắt đầu làm việc.

Bảng tính năng Windows


1
Điều này làm việc với tôi với IIS 8.5 và Windows 8.1. Tôi cần phải kích hoạt ASHX nhận được lỗi được mô tả trong câu hỏi (HTTP 404.17)
Sergio A.

CẢM ƠN BẠN! Điều này làm việc cho tôi. Tuy nhiên, trong trường hợp của tôi, tôi đã phải bật nó lên .NET 2.0 vì tôi đang sử dụng Dịch vụ web cũ
Stefan Vasiljevic

Đây là một bài viết cũ nhưng giải pháp của bạn đã lưu thịt xông khói của tôi. Tôi sẽ không tìm thấy điều này trong một triệu năm ... bất cứ nơi nào khác. Cảm ơn bạn.
Joe Schmucker

48

Nếu bạn đang sử dụng iis 7.5.

Chỉ cần vào IIS Manager, mở thuộc tính trang web của bạn.

Bạn sẽ thấy phần 'Handler Mappings' ở đó, chỉ cần đi tới phần đó và Tìm kiếm 'staticFile'.

Rất có thể nó là một tập tin cuối cùng trong danh sách.

Sau đó nhấp chuột phải vào nó và chọn 'Hoàn nguyên cho phụ huynh'.

Tôi đã lãng phí rất nhiều giờ trong khi tôi phải đối mặt lần đầu tiên, dù sao điều này sẽ giải quyết vấn đề của bạn.


2
Như Adi đã trả lời: lệnh này thực hiện tất cả những điều đó: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC

Cảm ơn bạn @Kumar cho tiền boa! IIS> Trang web> acme.com> Trình xử lý ánh xạ> Hoàn nguyên về cha mẹ. Trong trường hợp của tôi, tôi đã làm điều đó cho toàn bộ miền và không chỉ là "staticFile". Điều này làm việc cho tôi và đơn giản / thích hợp hơn là chạy một tệp thực thi (aspnet_regiis.exe). Tại sao đề nghị này không sủi bọt hơn nữa? =)
Jiminy

Mẹo tuyệt vời ... nhưng cái quái gì mà showstopper đến từ đâu vậy? Tôi không nhớ đã từng gặp điều đó trong các phiên bản trước của IIS ...!
Mike Gledhill

25

Tôi gặp vấn đề này với Windows Server 2012 với ASP .NET 4.5, bạn không thể sử dụng aspnet_regiis.exe và chỉ cần cài đặt ASP .NET 4.5 thông qua Trình hướng dẫn thêm vai trò và tính năng:

nhập mô tả hình ảnh ở đây

Bạn có thể tìm thấy mục menu "Thêm vai trò và tính năng" trong menu "Quản lý", ở góc bên phải của Trình quản lý máy chủ


1
Mục menu "Thêm vai trò và tính năng" bạn có thể tìm thấy trong menu "Quản lý" ở góc bên phải của Trình quản lý máy chủ
Alexander Trofimov

16

văn bản thay thế

Tôi nên kiểm tra tùy chọn này.


1
Điều đó chỉ đặt liệu nội dung tĩnh có thể được phục vụ hay không. Vấn đề của tôi là các yêu cầu kịch bản đang được ánh xạ tới nội dung tĩnh. Nếu tôi tắt nó, IIS thậm chí không cố gắng phục vụ trang, chỉ để trống cho tôi.
ProfK

16

Tôi đã giải quyết vấn đề này bằng cách kích hoạt WCF Services

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

Nhưng bạn phải thừa nhận rằng đó là cấu hình / đoán / thử nghiệm cài đặt IIS ENTIRE và xem / thử cái này / thử trong 4 hoặc 5 ngày của chúng tôi để cố gắng tìm một giải pháp xung quanh phương pháp tiếp cận LÀ HOÀN THÀNH VÀ TÌM HIỂU.

CẢM XÚC, 'IIS' LÀ SỰ KẾT HỢP LỚN NHẤT MỌI NGƯỜI CHƠI TRÊN MANKIND ĐẾN NGÀY


1
Tất cả bạn phải là kích hoạt tính năng nội dung tĩnh cho IIS. Điều này không có gì để làm với WCF.
ProfK

1
@ProfK phụ thuộc vào lý do tại sao bạn gặp lỗi đó, các nguyên nhân khác nhau dẫn đến cùng một lỗi - nếu bạn gặp lỗi với tệp SVC được định cấu hình để sử dụng WCF, thì cách khắc phục ở trên.
JohnLBevan

LOL hoàn toàn đồng ý, chuyển một số trang web và chỉ thấy 5 loại lỗi khác nhau mà không có thông báo lỗi thực tế hoặc một lỗi rất khó hiểu. Ví dụ "Trang không thể được hiển thị vì đã xảy ra lỗi máy chủ nội bộ" nghĩa là bạn đã thêm loại mime nội dung tĩnh đã tồn tại.
mike nelson

15

Tôi biết đây là một câu hỏi cũ, nhưng tôi đã có câu hỏi này với ứng dụng 3.5 trên máy Windows 8 được xây dựng lại và tôi vẫn nhận được câu hỏi này sau aspnet_regiis -iruđó và hóa ra ASP.NET 3.5 không được đánh dấu trong Tính năng phát triển ứng dụng (không đủ danh tiếng để đăng một hình ảnh).


2
@bicbmx cho hình ảnh, bạn có thể chia sẻ một liên kết sau khi tải lên ở đâu đó, ví dụ như trên imgur.com
superjos

12

Có khả năng nhóm ứng dụng được tạo cho ứng dụng của bạn theo mặc định là phiên bản 2. Vì vậy, mặc dù bạn thấy một trình xử lý cho phần mở rộng .svc trong danh sách, nó không hoạt động và coi nó là tệp tĩnh. Tất cả những gì bạn cần là mở thuộc tính nhóm ứng dụng và chuyển nó sang phiên bản 4.


8

Đăng ký lại asp.net .... sẽ giải quyết vấn đề.
nhập mô tả hình ảnh ở đây

Truy cập Visual Studio Command Prompt
và đăng ký asp.net dưới dạng windows \ microsoft.net \ Framework [.Net phiên bản num] \ aspnet_regiis.exe -i


2
aspnet_regiis.exe -i trả lời "Tùy chọn này không được hỗ trợ trên phiên bản hệ điều hành này." Tại sao IIS lại đau như vậy ở mông?
Paul McCarthy

5

Tôi gặp vấn đề tương tự trên máy Windows 8 tôi đang thiết lập. Tôi đã cài đặt vs2012 trước vs2010, cài đặt .NET framework 4.5. Tôi có nhóm ứng dụng của mình chạy trong 4.0. Tôi chắc chắn rằng tôi đã đăng ký aspnet cho 4.0 bằng aspnet_regiis -i. Điều đó vẫn không làm được. Sau đó, tôi đã mở các Tính năng của Windows và nhận thấy rằng 4.5 đã thêm một bộ có tên ".NET Framework 4.5 Advanced Services". Tôi đã kích hoạt nút Dịch vụ WCF và các con của nó và sau đó điểm cuối svc của tôi hoạt động chính xác. Hy vọng điều này sẽ giúp những người đang chuyển sang Windows 8.


Máy chủ 2012, IIS8 cũng ở đây, cảm ơn vì con trỏ bạn đã đưa tôi đi đúng hướng. Đối với những người quan tâm, tôi yêu cầu bật vai trò Máy chủ ứng dụng cũng như Vai trò Máy chủ Web. Tôi đã tìm thấy thông tin tôi cần ở đây: msdn.microsoft.com/en-us/l Library / hh167503 (v = nav, 70) .aspx
John

3

Tôi vấp phải câu hỏi này khi tôi gặp vấn đề tương tự. Nguyên nhân cốt lõi của vấn đề của tôi là nhóm ứng dụng được cấu hình không chính xác. Nó được đặt cho 2.0 một cách vô tình, khi nó cần được đặt thành 4.0. Câu trả lời tại liên kết sau đã giúp tôi khám phá vấn đề này: http://forums.iis.net/t/1160143.aspx


2

Tôi đã từng gặp vấn đề tương tự. Khi tôi thêm feaute nội dung tĩnh cho IIS, nó hoạt động tốt.


2

Chỉ cần một giải pháp khả thi khác tôi thấy có cùng một thông báo lỗi.

Khi cố gắng thiết lập ứng dụng web .NET 4.0 sang nhóm ứng dụng mới, tôi đã gặp phải lỗi lạ này cho tôi biết nó đang cố xử lý tệp aspx của tôi bằng trình xử lý tệp tĩnh, điều này không có ý nghĩa.

Vì một số lý do, ISAPI cho .NET 4.0 được đặt thành bị vô hiệu hóa trong khu vực Hạn chế ISAPI và CGI ở cấp độ máy chủ trong trình quản lý IIS. Cài đặt nó để kích hoạt là tất cả những gì được yêu cầu , tuy nhiên trình quản lý IIS 7.5 rất phức tạp và khó theo dõi, tôi phải mất một thời gian dài để tìm ra điều này.

Tôi đoán rằng vì đó là Ứng dụng 4.0 mà Công cụ 4.0 không thể xử lý, trình xử lý tệp tĩnh đang được sử dụng theo mặc định.


2

Đối với những người khác đọc này:

Điều này có thể xảy ra là nếu phiên bản .Net mà bạn đã đăng ký không phải là phiên bản được chọn trong 'Cài đặt cơ bản' của nhóm ứng dụng được đính kèm trên trang web của bạn. Ví dụ: nhóm ứng dụng trang web của bạn có .Net v2.0 được chọn nhưng bạn đã đăng ký v4.0


2

Đối với Windows 10 / Framework 4.7, tôi phải bật Kích hoạt HTTP thông qua phương pháp sau:

  1. Bảng điều khiển> Chương trình và tính năng> Bật hoặc tắt tính năng của Windows
  2. Trong .NET Framework 4.7 Dịch vụ nâng cao, mở rộng Dịch vụ WCF, chọn để kiểm tra Kích hoạt HTTP và bất cứ điều gì khác bạn cần khi làm việc với WCF
  3. Bấm OK và để cài đặt thực hiện công việc của nó, sau đó mở một dấu nhắc lệnh quản trị và đưa ra lệnh IISRESET

1

cmd -> nhấp chuột phải -> Chạy với tư cách quản trị viên

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i


0

Sử dụng trình quản lý IIS, tôi thấy rằng các tệp .aspx đã được ánh xạ (trong phần "Xử lý ánh xạ") thành ISAPI 2.0 - mặc dù ASP.NET 4.5 đã được cài đặt trước đó. Chỉnh sửa chúng để chỉ (cũng) thành một tệp thực thi cho ISAPI 4.0 64 bit đã khắc phục sự cố.

Tệp thực thi được tìm thấy trong% Windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll


0

tôi đã nhận được thông báo này cho một ứng dụng trên iis 7.5 với nhóm ứng dụng cổ điển được gán cho .net 2.0. tôi cần phải đến Handler Mappings và thêm hai bản đồ kịch bản, cả hai đều giống nhau ngoại trừ tên. một tên là svc-ISAPI-2.0-64, tên còn lại là svc-ISAPI-2.0. Đường dẫn yêu cầu là .svc. Và Executable là% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll. tôi đã khởi động lại iis và tất cả đều hạnh phúc


0

Một trong những trường hợp xấu nhất tôi vừa giải quyết là - có mục mâu thuẫn trong Web.config.

Trên máy cục bộ của tôi, tôi không có phần mở rộng .woff được đăng ký trong IIS, vì vậy tôi đã thêm nó bằng Web.config. Nhưng trên máy chủ sản xuất .woff đã đăng ký loại mime. Điều này gây ra xung đột cấp ứng dụng.

Phần buồn cười là không có lỗi đăng nhập cho điều này. Chỉ là một công việc đoán (lần đầu tiên của khóa học).

Vì vậy, đối với tôi giải pháp chỉ là loại bỏ và / hoặc các yếu tố khỏi web.config.


0

Tôi có cùng một vấn đề, tôi chỉ thay đổi phiên bản khung mục tiêu trên trang web thành phiên bản được phát triển, Tương tự trong IIS. Điều này đã giải quyết vấn đề của tôi. Hi vọng điêu nay co ich...

Cảm ơn bạn


0

đó có thể là nhiều lý do, trong trường hợp của tôi trong Nhóm ứng dụng-> cài đặt trước-> Kích hoạt ứng dụng 32 bit (nên là đúng). Nó đã được đặt thành false trước đó.


-1

Điều hướng đến hương vị của thư mục kiến ​​trúc .Net và CPU bằng cách sử dụng CMD hoặc powershell

Nhập lệnh này: aspnet_regiis –r


Trong Windows Server 2008 R2 nói: "Tùy chọn này không được hỗ trợ trên Windows Vista."
CSharper

Không có tùy chọn nào được gọi là -r
NishantMittal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.