2013-06-12 25 views
11

Tôi đang cố gắng tìm hiểu các dịch vụ web trong .NET mvc4. Tôi đã thử tạo một ứng dụng Internet mới và thêm một dịch vụ Web (asmx) vào dự án.Lỗi HTTP 404 khi gọi một dịch vụ web cục bộ trong .NET MVC4

Theo mặc định, VS thêm một dịch vụ web "HelloWorld". Khi tôi cố gắng chạy nó trong trình duyệt, tôi nhận được danh sách các hoạt động, mô tả dịch vụ (WSDL) và các chi tiết của hoạt động HellowWorld. Tuy nhiên, khi tôi thử gọi dịch vụ web, nó cung cấp lỗi sau:

Lỗi máy chủ trong ứng dụng '/'.

Không thể tìm thấy tài nguyên.

Mô tả: HTTP 404. Tài nguyên bạn đang tìm kiếm (hoặc một trong số phụ thuộc) có thể đã bị xóa, thay đổi tên hoặc tạm thời không khả dụng. Vui lòng xem lại URL sau và tạo chắc chắn rằng URL đó được viết đúng chính tả.

Tôi có thể thiếu một số bước cơ bản/cài đặt tôi đoán. Có thể một số cơ thể giúp đỡ xin vui lòng. Cảm ơn.

+0

Câu hỏi đầu tiên của tôi là tại sao bạn chọn dịch vụ web ASMX trên WCF? –

+0

Tôi chưa chọn ASMX. tôi chỉ cố gắng tạo một Webservice như được đưa ra trong một số cuốn sách. Cuối cùng tôi sẽ sử dụng một WebAPI. Tuy nhiên tôi muốn tạo và ví dụ sẽ có cả WebAPI cũng như ASMX cho mục đích demo. – saurabh

Trả lời

28

Tôi nhận được câu trả lời từ một trong các đồng nghiệp của mình :).

Khi chúng tôi gọi dịch vụ, MVC cố gắng giải quyết đường dẫn như được chỉ định trong RegisterRoutes. Do đó, nó cố gắng tìm một bộ điều khiển với tên đó và một phương thức có tên giống với tên của thao tác bên trong bộ điều khiển đó. Độ phân giải, bỏ qua các đường dẫn có phần mở rộng .asmx. Bạn có thể làm điều đó bằng cách thêm dòng sau vào RouteConfig.cs:

routes.IgnoreRoute("{*x}", new { x = @".*\.asmx(/.*)?" }); 

và nó hoạt động. Cảm ơn.

+1

Cảm ơn nhiều bạn! sau khi đấu tranh rất nhiều, tôi có thể tìm ra giải pháp của bạn .. – Dilip0165

+0

Ngoài ra câu trả lời hữu ích http://stackoverflow.com/questions/4675367/ignoreroute-with-webservice-exclude-asmx-urls-from-routing cho –

+0

Tôi biết điều này là cũ , nhưng cảm ơn bạn đã đăng bài. Tôi đã phải vật lộn với điều này trong 7-8 giờ. Các dịch vụ web cục bộ của tôi ngừng hoạt động và tôi không thể tìm ra, điều gì sai cho đến khi tôi tìm thấy bài đăng này. Đối với những người khác có cùng vấn đề, "routes.ignoreRoutes .." sẽ được thêm vào trong RouteConfig.cs. – Troels