Không thể phục vụ các dịch vụ WCF trong IIS trên Windows 8


199

Khi tôi cố gắng phục vụ dịch vụ WCF trên IIS trong máy Windows 8, tôi gặp lỗi nổi tiếng

Trang bạn đang yêu cầu không thể được phục vụ do cấu hình tiện ích mở rộng. Nếu trang là một tập lệnh, thêm một trình xử lý. Nếu tệp nên được tải xuống, thêm bản đồ MIME.

Công việc cũ xung quanh là để chạy aspnet_regiis -inhưng lệnh này dường như không được chấp nhận trong phản hồi mang lại cho Windows 8 This option is not supported on this version of the operating system. (...).

Điều gì sẽ là công việc xung quanh?

(Tôi đã kích hoạt thành công các aspxtrang thông thường , vì vậy hầu hết cấu hình IIS có vẻ tốt.)


Để biết thêm thông tin về aspnet_regiis -ilệnh dành cho người dùng trước Windows 8, hãy xem liên kết này: aspsnippets.com/Articles/ mẹo
David

Câu trả lời:


406

Có vẻ là không có trí tuệ; dịch vụ WCF phải được bật bằng Programs and Features -> Turn Windows features on or offBảng điều khiển. Truy cập .NET Framework Advanced Services -> WCF Servicesvà kích hoạt HTTP Activationnhư được mô tả trong bài đăng trên blog này trên mdsn .

Từ dấu nhắc lệnh (với tư cách quản trị viên), bạn có thể chạy:

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

Nếu bạn gặp lỗi thì hãy sử dụng cách bên dưới

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

6
Tôi đã dành thời gian tìm kiếm trong IIS Manager. Tôi nghĩ rằng Trình quản lý IIS nên có một biểu tượng chỉ đạo hoặc thông báo cho người dùng về Dịch vụ được hỗ trợ .NET Framework.
Tony_Henrich

Sử dụng dấu nhắc lệnh Tôi gặp lỗi "Thao tác đã hoàn tất nhưng tính năng Kích hoạt WCF-HTTP không được bật. Tính năng cha mẹ bắt buộc có thể không được bật. Bạn có thể sử dụng tùy chọn / enable-Feature / all để tự động bật từng tính năng cha từ danh sách sau. Nếu tính năng gốc đã được bật, hãy tham khảo tệp nhật ký để được chẩn đoán thêm. ". Tôi đã sử dụng phương thức GUI thay vào đó để biết những gì tôi đang bật và nó hoạt động.
Ben Adams

5
Tôi đã gặp lỗi "Tính năng gốc bắt buộc có thể không được bật" như Ben Anderson và đã thử đề xuất trong thông báo lỗi (thêm /allđối số), sau đó hoạt động tốt : DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45.
Troy Gizzi 16/1/2015

1
Thưa ngài, thật tuyệt vời. Bạn cũng có thể thêm (đó là một chi tiết nhỏ) rằng điều này có thể được thực hiện tùy thuộc vào phiên bản .Net Framework. Như trong.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18

Đây là một cứu tinh. Hầu hết các giải pháp trực tuyến cho vấn đề này chỉ có bạn kích hoạt .Net 3.5 Framework trong các tính năng Web. ĐÓ KHÔNG CÓ. Bạn cũng phải thực hiện bước được đề cập ở đây.
markaaronky

95

Đối với Windows Server 2012, giải pháp này rất giống với faester (xem bên trên). Từ Trình quản lý máy chủ, nhấp vào Add roles and features, chọn máy chủ phù hợp, sau đó chọn Features. Dưới .NET Framework 4.5 Features, bạn sẽ thấy WCF Services, và dưới đó, bạn sẽ tìm thấy HTTP Activation.


Cảm ơn vì điều này ! Nhưng còn .Net 4 thì sao? Bạn nghĩ rằng việc kích hoạt các tính năng này sẽ làm tương tự cho .Net v4.0?
Aladdin Gallas

2
Trong bất kỳ ứng dụng web hiện có nào, bạn cũng sẽ phải thực hiện các thao tác sau sau khi thêm tính năng Windows: - Bắt đầu inetmgr - Mở "Ánh xạ xử lý" - Kiểm tra xem ánh xạ svc-ISAPI cho tiện ích mở rộng * .svc có hay không. Nếu không, hãy sử dụng hành động "Hoàn nguyên về cha mẹ" để sao chép chúng từ trang web chính. Lưu ý rằng điều này giả định rằng ánh xạ trình xử lý tùy chỉnh được định cấu hình trong web.config cho ứng dụng, như thường thấy trong IIS7 +. Nếu không, bạn sẽ mất những thứ đó khi thực hiện "Hoàn nguyên về cha mẹ".
Berend Engelbrecht

13

Vui lòng thực hiện hai bước sau trên IIS 8.0

Thêm loại MIME mới & HttpHandler

  1. Tiện ích mở rộng: .svc, loại MIME: application / octet-stream

  2. Đường dẫn yêu cầu: * .svc, Loại: System.ServiceModel.Activation.HttpHandler, Tên: svc-Integration


Giải pháp tốt nhất cho Cài đặt Windows 7 rất cũ của tôi không bật - .Net 3.5 (Kích hoạt không phải là http) và WAS. Quá tinh tế để cài đặt lại HĐH
user919426

Thật đáng để biết về phương pháp này, đặc biệt là khi tạo và thêm trình xử lý của riêng bạn. Tuy nhiên, nếu bạn sử dụng 'bật và tắt các tính năng của Windows', bạn sẽ nhận được hầu hết các tiện ích mở rộng tệp đã biết, điều này sẽ giúp bạn tiết kiệm thời gian thêm từng tiện ích riêng lẻ (và tìm hiểu tất cả các chi tiết chính xác)
Daniel Hollinrake


3

Đây thực sự là giải pháp tương tự như giải pháp của faester và Bill Moon, nhưng đây là cách bạn thực hiện với PowerShell:

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

Tất nhiên, không có gì ngăn bạn gọi DISMtừ PowerShell.


Rất đẹp. Cảm ơn bạn đã thông tin.
Rod Hartzell

-1

bạn có thể thêm mã này vào web.config trong 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>

bạn có thể thay đổi phần mở rộng tập tin với phần mở rộng tập tin của bạn


Xin chào @malik - Bạn có thể làm rõ cách các phần mở rộng tệp ánh xạ có thể làm cho các điểm cuối svc hoạt động không?
faester

nếu tôi hiểu chính xác, bạn có thể thay đổi phần mở rộng với mong muốn của bạn. Bạn có thể xem từ feedforall.com/mime-types.htm nhưng bạn sẽ nói một điều khác, xin lỗi tôi không thể hiểu.
Malik mocation
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.