2010-07-18 90 views
50

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 Windows Server 2008 (64bit)Lỗi HTTP 404,3 - Not Found" khi duyệt dịch vụ WCF trên Windows Server 2008 (64bit)

Trong khi duyệt WCF. dịch vụ (.svc) tại địa phương mỗi thứ là ok nhưng khi duyệt với URL miền đầy đủ, nó đã nhận ra lỗi

địa chỉ cục bộ là như thế này:. http://localhost/MyService.svc

và miền địa chỉ là như thế này: 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 sẽ được đánh giá

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


Lỗi HTTP 404,3 - Not Found

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

Module: StaticFileModule

Thông báo: ExecuteRequestHandler

Handler: StaticFile

Error Code: 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

Logon Phương pháp: Anonymous

Logon tài Anonymous

Trả lời

22

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

Chuyển đến Xử lý ánh xạ | Thêm Handler quản lý -> Và sau đó thêm bên dưới thông tin

Request Đường dẫn: * .svc

Loại: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version = 3.0.0.0, Văn hóa = trung tính, PublicKeyToken = b77a5c561934e089

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

+1

Tôi có handler mà ánh xạ, nhưng vẫn nhận được lỗi tương tự –

+2

Đối với bất cứ ai muốn để thêm video này vào file web.config của họ, điều này làm việc cho tôi trong một dự án .NET 4.5:

+4

Đối với tôi, việc thêm dòng từ @StefanMohr vào Web.config không hoàn toàn hoạt động. Tuy nhiên, tôi đã thay đổi' path = "*. Svc" 'và' verb = "*" 'và nó hoạt động rất tốt.Vì vậy, dòng tôi đã sử dụng làm việc là:' ' (được thêm vào trong cấu hình/system.webServer/trình xử lý) –

0

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

Tuy nhiên, sau this post 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.

7

Nếu ai có vấn đề này trên Windows Server 2012, Bill Moon câu trả lời here giải quyết nó cho tôi:

"Đối với Windows Server 2012 ... Từ Server Manager, click vào Add roles và các tính năng, chọn thích hợp Server, sau đó chọn Features. Trong các tính năng của .NET Framework 4.5, bạn sẽ thấy WCF Services, và dưới đó, bạn sẽ thấy HTTP Activation. "

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

139

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

Hoặc cách thay thế và dễ dàng 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 đã chọn tất cả các tùy chọn được đề cập trong ảnh chụp màn hình bên dưới.

enter image description here

+25

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

+2

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

+1

đây là giải pháp cho tôi. Nó hoạt động trên windows server 2012 r2 –

0

tôi muốn để thêm video này như một 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 các 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 không hoạt động vì nó không thể tìm thấy System.ServiceModel.Activation.HttpHandler. Những gì cuối cùng đã làm việc được thêm các xử lý Mori đề cập đến bằng tay để tập tin 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

Hãy thử bỏ chọn kích hoạt WCF HTTP từ "Turn Windows tính năng hoặc tắt" cửa sổ (See here) và cài đặt lại bằng cách vào

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

và thực hiện ServiceModelReg -i

0

tôi có cửa sổ 10 máy tính xách tay của tôi và sử dụng studio trực quan năm 2015 để phát triển WCF. WCF đang chạy tốt trong phòng thu trực quan nhưng khi được lưu trữ trong IIS tôi nhận được 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 tính năng của cửa sổ bật" và các tính năng được cài đặt như được đánh dấu trong ảnh chụp màn hình.

Điều này phù hợp với tôi.

enter image description here

Các vấn đề liên quan