Lỗi HTTP 404.3 - Không tìm thấy "khi duyệt dịch vụ wcf trên Windows Server 2008 (64bit)


88

Tôi đang phát triển một ứng dụng dựa trên .Net Framework 3.5 sp1 và được lưu trữ trên máy chủ windows 2008 (64bit).

Trong khi duyệt cục bộ dịch vụ wcf (.svc), mọi thứ đều ổn nhưng khi duyệt với URL miền đầy đủ, nó gặp lỗi.

địa chỉ cục bộ như sau: http: //localhost/MyService.svc

và địa chỉ miền giống như sau: http://MySite.ir/MyService.svc

bằng cách các trang (.aspx) và các tệp khác hoạt động chính xác cả trên máy chủ cục bộ và với địa chỉ miền.

bất kỳ ý tưởng nào sẽ được đánh giá cao

Đây là lỗi chi tiết:


Lỗi HTTP 404.3 - Không tìm thấy

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

Mô-đun: StaticFileModule

Thông báo: ExecuteRequestHandler

Xử lý: StaticFile

Mã lỗi: 0x80070032

URL được yêu cầu: http://MySite.ir:80/MyService.svc

Đường dẫn vật lý: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Phương thức đăng nhập: Ẩn danh

Đăng nhập Người dùng Ẩn danh

Câu trả lời:


224

Hãy đảm bảo rằng bạn đã kích hoạt các thành phần WCF từ đây .

Hoặc cách khác và dễ dàng hơn là đi tới bảng điều khiển -> Bật hoặc tắt tính năng Windows -> và đảm bảo bạn đã đánh dấu tất cả các tùy chọn như được đề cập trong ảnh chụp màn hình bên dưới.

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

Bạn có thể cần phải kích hoạt từng hộp và chấp nhận trong trường hợp gặp lỗi khi kích hoạt tất cả các tính năng cùng một lúc


36
.Net Framework 4.5 Dịch vụ nâng cao -> Kiểm tra Dịch vụ WCF và -> Kích hoạt HTTP đã làm điều đó cho tôi!
devHead

3
Windows Server 2012 - chỉ cần kích hoạt HTTP và chọn Chia sẻ cổng.
dibs487

2
Tôi sẽ thêm vào phản hồi này để được kích hoạt từng hộp một. Tất cả các lần kiểm tra cùng một lúc có thể không thành công. Nó xảy ra trong Windows Server 2012.
harveyt

2
câu trả lời này nên ở phía trên cùng
markthewizard1234

3
Đây là câu trả lời chính xác. Điều này đã giải quyết được vấn đề cho tôi và tôi không phải thêm bất kỳ thứ gì theo cách thủ công vào IIS Handler Mappings.
Anthony

25

OK, đây là câu trả lời:

Đi tới Bản đồ xử | Thêm Trình quản lý Xử lý -> Và sau đó thêm thông tin bên dưới

Đường dẫn yêu cầu: * .svc

Loại: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Phiên bản = 3.0.0.0, Văn hóa = trung lập, PublicKeyToken = b77a5c561934e089

Tên: svc-Tích hợp


3
Đối với bất kỳ ai muốn thêm cái này vào tệp web.config của họ, cái này phù hợp với tôi trong dự án .NET 4.5: <add name = "svc-Integrated" path = " .svc" verb = " " type = "System.ServiceModel. Activation.HttpHandler, System.ServiceModel.Activation, Phiên bản = 4.0.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr

6
Đối với tôi, việc thêm dòng từ @StefanMohr vào Web.config không hoạt động. Tuy nhiên, tôi đã thay đổi path="*.svc"verb="*"và nó làm việc rất lớn. Do đó, dòng tôi đã sử dụng đã hoạt động là: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(được thêm tại cấu hình / system.webServer / xử lý).
Aron Boyette

11

Nếu có ai gặp sự cố này trên Windows Server 2012, câu trả lời của Bill Moon ở đây đã giải quyết cho tôi:

"Đối với Windows Server 2012 ... Từ Trình quản lý máy chủ, nhấp vào Thêm vai trò và tính năng, chọn máy chủ thích hợp, sau đó chọn Tính năng. Trong Tính năng của .NET Framework 4.5, bạn sẽ thấy Dịch vụ WCF và trong đó, bạn sẽ tìm Kích hoạt HTTP. "


1
Trong bất kỳ ứng dụng web hiện có nào, bạn cũng sẽ phải thực hiện những việc sau sau khi thêm tính năng Windows: - Khởi động inetmgr - Mở "Ánh xạ trình xử lý" - Kiểm tra xem ánh xạ svc-ISAPI cho phần mở rộng * .svc có xuất hiện hay không. Nếu không, hãy sử dụng hành động "Hoàn nguyên về trạng thái gốc" để 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 xảy ra trong IIS7 +. Nếu không, bạn sẽ mất những thứ đó khi thực hiện "Hoàn nguyên về trạng thái gốc".
Berend Engelbrecht,

8

Tôi có windows 10 trong máy tính xách tay của mình và sử dụng visual studio 2015 để phát triển WCF. WCF đang chạy tốt trong studio trực quan nhưng khi được lưu trữ trong IIS, tôi gặp lỗi tương tự.

Tôi đã kiểm tra trình xử lý IIS. tiện ích mở rộng svc bị thiếu. Vì vậy, tôi đã cố gắng thêm trình xử lý mới trong IIS theo đề xuất của Mori trong câu trả lời đầu tiên. Tôi không tìm thấy loại "System.ServiceModel.Activation.HttpHandler".

Vì vậy, tôi đã mở "Bật hoặc Tắt các tính năng của cửa sổ" và cài đặt các tính năng như được đánh dấu trong ảnh chụp màn hình.

Điều này đã làm việc cho tôi.

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


0

Nếu bạn đang sử dụng .Net 4.x, PublicKeyToken là 31bf3856ad364e35.

Tuy nhiên, sau bài đăng này về cách cài đặt Dịch vụ WCF đúng cách trong IIS, trình xử lý đã được thiết lập cho tôi.


0

Tôi muốn thêm điều này làm bình luận cho câu trả lời nhưng không có đủ đại diện cho nó. Tôi đã thử chạy ServiceModelReg và aspnet_regiis.exe với nhiều cờ khác nhau và thêm tính năng Kích hoạt HTTP nhưng nó vẫn không hoạt động. Ngay cả khi sử dụng giao diện người dùng ánh xạ Handler trong IIS cũng không hoạt động vì nó không thể tìm thấy System.ServiceModel.Activation.HttpHandler. Điều cuối cùng đã hoạt động là thêm trình xử lý mà Mori đề cập theo cách thủ công vào tệp web.config của tôi.

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

Dự án của tôi đang chạy .Net 3.5 và IIS 7.5 trên Windows 7 và IIS 7.0 trên Win Server 2008 R2.


0

Thử bỏ chọn kích hoạt WCF HTTP từ cửa sổ "Bật hoặc tắt tính năng Windows" ( Xem tại đây ) và cài đặt lại bằng cách đi tới

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

và thực hiện ServiceModelReg -i

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.