HTTP 404 khi truy cập tệp .svc trong IIS


86

Gần đây tôi đã tạo một dịch vụ WCF hoạt động tốt khi được kiểm tra từ Visual Studio 2008. nhưng khi tôi triển khai dự án lên IIS và tôi cố gắng truy cập tệp .svc từ IIS, tôi gặp lỗi này:

"Server Error in '/' Application.The resource cannot be found.  "

Tôi đã gặp sự cố này trong 4 ngày qua.

trong Ánh xạ xử lý của Trình quản lý IIS, tôi có thể thấy hai mục nhập cho .svc:

svc-Integrated and svc-ISAPI-2.0

Câu trả lời:


75

Bạn cần thêm ánh xạ cho phần mở rộng SVC vào ASP.NET. Cách dễ nhất để làm điều này là chạy ServiceModelReg.exe -itừ C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Bạn cũng có thể cần bật ASP.NET nếu bạn chưa làm như vậy.


Nếu bạn đang sử dụng Windows Server 2012 hoặc 2016, hãy làm theo các hướng dẫn sau:


Bạn đã thử khởi động lại IIS sau đó?
tvanfosson

Bạn hiện có bản đồ kịch câm cho .svc chưa?
tvanfosson

Nó không phải là ánh xạ kịch câm- Bản đồ mở rộng ứng dụng. xem msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim

22
Quan trọng: không thực hiện việc này trên Server 2012 đã cài đặt .NET 4.5. Nó khiến tôi khó chịu cho đến khi tôi chạy ServiceModelReg.exe -ua. Xem tại đây để biết giải pháp Máy chủ 2012: stackoverflow.com/questions/11116134/…
Scott Anderson

109

Điều gì đã hiệu quả với tôi, Trên Windows 2012 Server R2:

WCF HTTP 404

Cảm ơn "Aaron D"


3
Bởi đến nay, tùy chọn dễ dàng nhất.
BIDeveloper

Điều đó đã làm việc cho tôi trên máy tính để bàn Win10, Win8.1 và máy chủ Win2012 :) Cảm ơn!
Skipper

Điều đó đã làm việc cho tôi trên máy tính để bàn Win10, Win8.1 và máy chủ Win2012 :) Cảm ơn!
Skipper

2
Đối với một số lý do, tôi đã phải cài đặt các tính năng cho 3,5 cũng như cho 4.5, và thông qua dòng lệnh: dism /online /enable-feature /featurename:WCF-http-Activation45 /all và cũng dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan

1
Hoạt động trên Sever 2019 cũng
Zar Shardan

56

Tôi tìm thấy các hướng dẫn này trên một bài đăng blog chỉ ra bước này, bước này phù hợp với tôi (Windows 8, 64-bit):

Đảm bảo rằng trong các tính năng của windows, bạn có cả hai tùy chọn WCF trong .Net framework đều được đánh dấu. Vì vậy, hãy đi tới Bảng điều khiển -> Chương trình và Tính năng -> BẬT / Tắt các Tính năng của Windows -> Tính năng -> Thêm Tính năng -> Tính năng .NET Framework XX. Đảm bảo rằng .Net framework cho biết nó đã được cài đặt và đảm bảo rằng nút Kích hoạt WCF bên dưới nó được chọn (đánh dấu vào hộp kiểm) và cả hai tùy chọn trong Kích hoạt WCF cũng được chọn.
Đó là:
* Kích hoạt HTTP
* Kích hoạt không phải HTTP
Cả hai tùy chọn cần được chọn (đánh dấu vào hộp kiểm).

2
Nếu tôi có thể ủng hộ điều này nhiều hơn một lần, thì điều này khiến tôi KHÔNG THỂ NÀO, chúc mừng!
Chris W.

4

Tôi thấy bạn đã giải quyết được vấn đề của mình - nhưng đối với hậu thế:

Chúng tôi đã gặp sự cố tương tự và trình xử lý SVC đã được cài đặt chính xác. Vấn đề của chúng tôi là các yêu cầu xử lý trình xử lý ExtensionlessUrl trước khi chúng đến trình xử lý SVC.

Để kiểm tra điều này - trong Bản đồ xử lý trong Trình quản lý IIS ở cấp máy chủ web, hãy xem danh sách trình xử lý theo thứ tự (đó là một tùy chọn ở phía bên tay phải). Nếu các trình xử lý ExtensionlessUrl khác nhau xuất hiện phía trên các trình xử lý SVC, thì hãy liên tục di chuyển chúng xuống cho đến khi chúng ở dưới cùng.


1

Xác minh rằng thư mục của bạn đã được chuyển đổi thành Ứng dụng là IIS của bạn.


1

Tôi đã có cùng một vấn đề ngày hôm nay.

Đối với tôi, giải pháp là vào IIS, nhấp chuột phải vào tên Trang web mới, chọn Thuộc tính, ASP.Net và thay đổi phiên bản ASP.Net từ "1.1.4322" (mà nó đã đặt làm mặc định) thành 2.0.50727.

Sau khi làm xong, tôi có thể nhấp chuột phải vào tệp .svc, nhấp vào "Duyệt qua" và xem trang web Dịch vụ thân thiện.


1

Điều này cũng có thể trở thành một vấn đề sau khi bật Khả năng Tương thích Quản lý IIS 6 trong windows 10. Đặt Khung kích hoạt HTTP trong Dịch vụ WCF sẽ khắc phục được sự cố.


0

Trong trường hợp của tôi, lỗi do cài đặt ánh xạ không chính xác trong tệp applicationhost.config (\ System32 \ inetsrv \ config). Vì một số lý do, Visual Studio 2013 đã làm hỏng nó trong khi tạo một thư mục ảo trong IIS. Cách khắc phục là chỉnh sửa thủ công phần trang web trong tệp.


0

Có 2 phiên bản khung .net được đưa ra dưới các tính năng trong thêm vai trò / tính năng trong máy chủ 2012

a. 3.5

b. 4,5

Tùy thuộc vào khung được sử dụng, bạn có thể bật Kích hoạt HTTP trong các dịch vụ WCF. :)


0

Trong trường hợp của tôi là Win 10. tệp applicationHost.config bị hỏng bởi VS 2012. Và bạn có thể lấy bản sao lịch sử của tệp này trong C: \ inetpub \ history. Sau đó khởi động lại IIS và nó hoạt động bình thường.


0

Tôi đã phải thêm phần mở rộng .svc vào phần mở rộng được phép trong cài đặt lọc yêu cầu (đã gặp lỗi 404.7 trước đó).

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


0

Thêm hậu tố .svc như được phép trong lọc yêu cầu đã thực hiện thủ thuật đối với tôi.


0

Không có giải pháp nào ở trên giải quyết được lỗi này cho tôi. Tôi phải đặt những điều sau trong web.config:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Tôi muốn nhân cơ hội này để KHÓA HỌC Microsoft một lần nữa vì đã tạo ra một mớ hỗn độn lớn như vậy với .NET Framework và khiến cuộc sống của các nhà phát triển trở nên khốn khổ trong suốt thời gian dà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.