2012-09-14 22 views
10

Tôi có một ứng dụng MVC4, nhưng tôi chủ yếu sử dụng nó cho các phần WebAPI. Tôi muốn có một tập tin "HTML cũ thuần túy" được gửi lại cho người dùng (sau đó sẽ sử dụng KnockoutJS hoặc KendoUI để kéo JSON từ bộ điều khiển webapi).MVC4 - Có cách nào để định tuyến gốc tới trang html chưa được xử lý "bình thường" không?

Tôi biết tôi có thể làm điều này:

routes.IgnoreRoute("{page}.html"); 

Và sau đó nếu tôi duyệt đến "localhost/index.html" nó thành công chỉ trả lại trang .html của tôi. Tuy nhiên, tôi thực sự muốn ánh xạ đường dẫn mặc định "gốc" "localhost /" để trả về index.html của tôi.

Tôi cố gắng này:

routes.MapPageRoute("root", "", "~/index.html"); 

nhưng đó ném lỗi:

There is no build provider registered for the extension '.html'. You can register one in the <compilation><buildProviders> section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

Bất cứ ai có bất cứ ý tưởng về làm thế nào tôi có thể làm công việc này? Tôi có thể chỉ cần nhấn một bộ điều khiển mặc định trả về một trang html đơn giản, nhưng có vẻ như quá tải để đi qua toàn bộ ngăn xếp ASP.NET một lần cho trang HTML, mà sau đó chỉ cần gọi một URL WebAPI để quay trở lại thông qua ngăn xếp ASP.NET để lấy một số dữ liệu JSON cho mô hình của trang. Về cơ bản tôi chỉ muốn "bỏ qua" tất cả các hệ thống ống nước MVC và có IIS gửi cho tôi trở lại trang html, như thể nó không phải là một ứng dụng ASP.NET, hoặc ít nhất là làm ít chế biến nhất có thể.

+0

Nhưng một khi bạn nhận được để các tuyến đường MVC, bạn đã đạt ASP.Net. Nếu bạn muốn IIS xử lý nó, bạn phải thiết lập nó ở cấp độ máy chủ với các quy tắc viết lại và như vậy. – McGarnagle

+0

Vâng, và tôi ổn với nó chạm vào ASP.NET một chút. Tôi chỉ tìm ra một bộ điều khiển trống là quá mức cần thiết. Với các tuyến đường bỏ qua nó ít nhất không phải nhanh chóng và gọi bộ điều khiển và xem. – CodingWithSpike

Trả lời

12

Thêm dòng sau để cấu hình định tuyến của bạn:

routes.IgnoreRoute(""); 
+0

Ah, tất nhiên rồi! Vì vậy, đơn giản, tại sao tôi không nghĩ về điều đó! :) Cảm ơn! – CodingWithSpike

+0

Nếu tôi tạo một dự án WebApi cơ bản, hãy thêm một index.html và cũng thêm dòng ở trên vào lớp RouteConfig của tôi, tôi nhận được một trang 404, tôi có thiếu gì đó không? – AlexandruC

+0

A.K bạn nên thêm 'routes.IgnoreRoute (" ");' trước các tuyến đường khác của bạn. – bonh

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