2010-04-09 31 views
58

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

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

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

trong Mappings Handler của IIS Manager, tôi có thể thấy hai mục cho .svc:

svc-Integrated and svc-ISAPI-2.0 

Trả lời

62

Bạn cần phải thêm một bản đồ cho phần mở rộng SVC để ASP.NET. Cách dễ nhất để thực hiện việc này là chạy ServiceModelReg.exe -i từ C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Bạn cũng có thể cần phải kích hoạ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, hãy làm theo những hướng dẫn này thay vì:

+0

Tôi chạy điều này nhưng vẫn không hoạt động. – Attilah

+0

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

+0

vâng, tôi đã chạy iisreset. – Attilah

1

xác nhận rằng bạn thư mục đã được chuyển đổi thành một ứng dụng được IIS của bạn.

3

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

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

Để kiểm tra điều này - trong Ánh xạ xử lý trong Trình quản lý IIS ở cấp máy chủ web, hãy xem danh sách các 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 trình xử lý SVC, sau đó liên tục di chuyển chúng xuống cho đến khi chúng ở dưới cùng.

1

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

Đối với tôi, giải pháp là đi 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.

Khi tôi đã làm điều đó, 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.

44

tôi thấy these instructions on a blog post mà chỉ bước này, mà làm việc cho tôi (Windows 8, phiên bản 64-bit):

Hãy chắc chắn rằng trong các cửa sổ tính năng, bạn có cả hai lựa chọn WCF dưới .Net framework được đánh dấu. Vì vậy, hãy vào Control Panel -> Programs and Features -> Bật tính năng Windows ON/Off -> Tính năng -> Thêm tính năng -> .NET Framework X.X Tính năng. Hãy chắc chắn rằng khuôn khổ .Net nói rằng nó được cài đặt, và chắc chắn rằng nút kích hoạt WCF bên dưới nó được chọn (đánh dấu chọn) và cả hai tùy chọn theo WCF kích hoạt cũng được kiểm tra.
These are: 
* HTTP Activation 
* Non-HTTP Activation 
Both options need to be selected (checked box ticked).
+1

Nếu tôi có thể upvote điều này nhiều hơn một lần tôi sẽ, điều này đã được lái xe Tôi NUTS, chúc mừng! –

+0

tuyệt vời cảm ơn bạn – nologo

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). Đối với một số lý do, Visual Studio 2013 hỏng nó trong khi tạo một thư mục ảo trong IIS. Bản sửa lỗi là chỉnh sửa thủ công phần trang web trong tệp.

55

gì làm việc cho tôi, Trên Windows 2012 Server R2:

WCF HTTP 404

Nhờ đi vào "Aaron D"

+5

điều này là tốt cho windows 10 cũng –

+1

Đến nay là lựa chọn dễ dàng nhất. – BIDeveloper

+1

Đó là mẹo trên Windows 10, cảm ơn :) –

0

Có 2 .net khuôn khổ phiên bản được đưa ra theo các tính năng trong vai trò add/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 HTTP-Activation trong các dịch vụ WCF. :)

0

Trong trường hợp của tôi Win 10. ứng dụng tệpHost.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 đúng.

1

Điều này cũng có thể trở thành vấn đề sau khi bật IIS 6 Khả năng tương thích quản lý trong cửa sổ 10. Đặt kích hoạt HTTP khung dưới Dịch vụ WCF sẽ khắc phục sự cố.

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