2009-11-20 34 views
6

Vì một số lý do, định tuyến của tôi bỏ qua bất kỳ nỗ lực nào để truy cập các trang MVC của tôi và chỉ đơn giản là cấp cho tôi 404. Tôi có một WebForms ứng dụng thiết lập như sau:Trộn ASP.NET MVC vào ASP.NET WebForms

Virtual Directory: điều

Vì vậy, tôi thường truy cập vào trang web của tôi như vậy:

Các cấu trúc ban đầu của ứng dụng ASP.NET WebForms của tôi phản ánh hệ thống tệp để tôi có các thư mục chứa đầy đủ các tệp .aspx và tôi cần để có thể sử dụng t hem như thế. Đối với một số lý do khi tôi cố gắng truy cập vào một trang bằng cách sử dụng định tuyến MVC như:

tôi chỉ nhận được một lỗi 404. Tôi đã sử dụng ASP.NET MVC trên riêng của nó và tôi biết rằng ngay cả khi tôi đã không thiết lập thư mục của tôi đúng cách, tôi sẽ không nhận được một 404. Tôi sẽ có được những lý do tại sao trang không thể tìm thấy và gợi ý nơi các tập tin nên được. Dưới đây là thông tin định tuyến của tôi. Tôi làm sai ở đâu?

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 
    routes.MapRoute(
     "Default", 
     // Route name 
     "{controller}/{action}/{id}", 
     // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } 
     // Parameter defaults 
    ); 
} 

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

Trả lời

2

Bạn có thể cho tôi biết bạn đang chạy hệ điều hành nào và liệu trang web này có đang chạy dưới máy chủ VS Web Dev hay IIS không?

Định tuyến trong MVC hướng dẫn yêu cầu đến lớp Trình điều khiển và sau đó là phương thức Hành động cụ thể. Bạn có một lớp có tên HomeController với một phương thức có tên là Index không?

Giả sử bạn có một bộ điều khiển mà nhìn này này ...

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

... sau đó các url mà bạn đề cập nên làm việc. Tuy nhiên, ASP.NET MVC sẽ mong đợi tìm bất kỳ khung nhìn nào liên kết với bộ điều khiển Home trong một thư mục có tên Views \ Home hoặc Views \ Shared trong vdir của bạn. Trong trường hợp này, đối với hành động Index, nó sẽ trông đợi tìm một khung nhìn có tên Index.aspx (hoặc .ascx). Tuy nhiên, một cái nhìn mất tích thường không dẫn đến 404 - thường do bộ điều khiển không được tìm thấy, phương thức hành động không được tìm thấy, hoặc trên IIS 6 đường dẫn asp.net không nằm trong cài đặt ký tự đại diện cho vdir.

update:

Bạn có chắc chắn web.config của bạn có HttpHandler MVC tại chỗ (để MVC là trong các đường ống ASP.NET). Bạn nên có một cái gì đó như thế này ...

<add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

... trong phần httpHandlers bạn và điều này ...

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

... trong phần 'httpModules' của web.config của bạn.

cập nhật 2:

Dựa trên ý kiến ​​của bạn tôi nghi ngờ bạn đã không nhận được mã ASP.NET MVC trong các đường ống. Bạn nên dùng web của bạn.cấu hình và so sánh nó với một từ một trang web MVC mới được tạo ra và tìm kiếm các mục cấu hình bị thiếu. Tôi đã đề xuất một vài ở trên, nhưng có thể có nhiều hơn.

+0

Windows 7 x64 - II7.5 - Trang web đang chạy trong IIS. Tôi có các quy ước tại chỗ. Một bộ điều khiển gọi là HomeController với một phương thức Index(). Tôi cũng có Chế độ xem trong Chế độ xem/Trang chủ/được gọi là Chỉ mục. –

+0

Thậm chí nếu tôi không có bộ điều khiển và chế độ xem tại chỗ, tôi sẽ không nhận được 404, tôi sẽ nhận được lý do khiến tuyến đường không thành công. Điều này khiến tôi tin rằng việc định tuyến bị sai lệch. –

+0

Bạn có bị bất kỳ điểm ngắt nào bị trúng không? Ngoại lệ trong trình xem sự kiện? –

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