2010-10-08 31 views
8

Tôi đang cố chuyển đổi ứng dụng ASP .NET MVC 2 để chạy trên nginx/mono 2.8. Cho đến nay nó có vẻ hoạt động khá tốt ngoại trừ việc tuyến mặc định không hoạt động khi đường dẫn trống. Tôi đang ủy quyền tất cả các yêu cầu thông qua máy chủ fastcgi và tôi được phục vụ với trang ASP .NET 404 không tìm thấy.Tuyến đường mono MVC 2 không hoạt động

tức này không hoạt động

http://mysite.com 

Nhưng điều này không

http://mysite.com/home 
tập tin

My Global.asax.cs trông giống như

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text.RegularExpressions; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Routing; 

namespace MyProject 
{ 
    public class MvcApplication : System.Web.HttpApplication 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      // Default route 
      routes.MapRoute(
       "Default",      // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
       new string[] {"MyProject.Controllers"} 
      ); 
     } 

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

EDIT này: Một số biết thêm trên thiết lập của tôi. Tôi đang chạy OS X 10.6 nếu điều đó tạo ra bất kỳ sự khác biệt nào. Ngoài ra cùng một vấn đề tồn tại đối với tuyến đường mặc định của bất kỳ khu vực nào trong dự án MVC.

+0

Tuyến đường có thích trợ giúp này không? 'routes.MapRoute (" Root ","/", new {controller =" Home ", action =" Index "})' –

+0

Có thêm một tuyến đường cụ thể như vậy không hoạt động nhưng tôi không muốn làm điều đó như IIS và MVC không cần nó. Tôi không chắc chắn nếu nó là một vấn đề với Mono hoặc thiết lập Nginx của tôi. – Alex

+0

Đồng ý. Đó không phải là điều bạn muốn làm. –

Trả lời

5

Tôi thực sự chạy vào cùng một vấn đề và giải quyết nó (ít nhất là trong hoàn cảnh của tôi) do nhầm lẫn hoàn chỉnh ...

Trong nginx walkthrough trên trang web mono dự án, nó nói để nhập những dòng này trong nginx của bạn. conf file:

index index.html index.htm default.aspx Default.aspx; 
fastcgi_index Default.aspx; 

Vâng, tôi đã thiết lập theo cùng một cách chính xác (hoặc vì vậy tôi nghĩ) trên hai máy ảo. Vấn đề là, một máy ảo đã có công việc url gốc của nó và một không. Những gì nó bật ra được là tôi quên mất dấu chấm phẩy trên dòng 'chỉ số' trên máy ảo mà làm việc, do đó, dòng 'fastcgi_index' được hiểu là một phần của dòng 'chỉ mục'.

Vì vậy, trên VM không hoạt động, tôi đã xóa bỏ dấu chấm phẩy. Và đoán xem? Nó đã làm việc. Vì vậy, sau đó tôi đã thêm dấu chấm phẩy và loại bỏ hoàn toàn dòng 'fastcgi_index' và nó vẫn hoạt động. Vì vậy, dựa trên bằng chứng giai thoại này và một số công việc đoán, tôi muốn nói rằng dòng 'fastcgi_index' không nên được bao gồm trong các ứng dụng MVC. Vâng, ít nhất MVC 3, tôi đã không kiểm tra bất cứ điều gì khác.

+0

Thật tuyệt vời! – Alex

1

Did bạn làm theo các cấu hình nginx từ trang này ?: http://www.mono-project.com/FastCGI_Nginx

tôi đoán sẽ là tài liệu mặc định là nhận được trong cách.

+0

Đúng vậy, tôi đã thiết lập chính xác. Và nó vẫn không hoạt động: ( – Alex

+0

Điều này hoàn toàn ngu ngốc, nhưng nếu bạn thêm dấu gạch chéo vào url tuyến đường: "/ {controller}/{action}/{id}". Điều duy nhất tôi có thể nghĩ đến Các đề xuất của Alex về mặt kỹ thuật hoạt động và các tuyến mặc định của Vùng của bạn cũng không hoạt động (có nghĩa là tài liệu mặc định của bạn không phải là vấn đề) –

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