2014-04-21 19 views
13

Tôi đang cố gắng khởi chạy trang web MVC5 trên hộp Linux của mình bằng Mono và XSP4. Nó hoạt động với không có quan điểm tuy nhiên khi tôi cố gắng để làm cho một cái gì đó nó mang lại cho tôi lỗi.Mono MVC5 - Lượt xem không hoạt động

Đây là mã thử nghiệm của tôi. Lưu ý rằng tôi đã không thay đổi bất cứ điều gì, điều này về cơ bản là một trang web trống mà không có EF hoặc bất kỳ thư viện khác. Chỉ cần xương trần MVC5 + Razor.

public ActionResult Index() 
{ 
    // return Content("'sall good"); // works 
    return View(); 
} 

System.InvalidOperationException

Không thể xác định vị trí Razor Nhà máy chủ loại: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version = 5.0.0.0, Culture = trung tính, PublicKeyToken = 31BF3856AD364E35

Mô tả: Yêu cầu xử lý HTTP 500.Error.

Chi tiết: Ngoại lệ không phải web. Xuất xứ ngoại lệ (tên của ứng dụng hoặc đối tượng): System.Web.WebPages.Razor.

stacktrace

at System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory (System.String typeName) [0x00000] in <filename unknown>:0 

at System.Collections.Concurrent.ConcurrentDictionary`2+<GetOrAdd>c__AnonStorey3[System.String,System.Func`1[System.Web.WebPages.Razor.WebRazorHostFactory]].<>m__0() [0x00000] in <filename unknown>:0 

at (wrapper delegate-invoke) System.Func`1<System.Collections.Generic.KeyValuePair`2<string, System.Func`1<System.Web.WebPages.Razor.WebRazorHostFactory>>>:invoke_TResult__this__() 

... 

Tôi đã cố gắng để thay đổi Version = 5.0.0.0 đến 4.0.0.0 và 3.0.0.0 vv nhưng không hoạt động. Tôi vẫn nhận được lỗi tương tự ngay bây giờ là khoảng 4.0.0.0.

Có hy vọng nào không?

+0

Bạn đã thử: sudo apt-get cài đặt asp.net-ví dụ –

+0

@DavidCrowell Không, AFAIK chúng là vô nghĩa vì chúng từ 3 tuổi trở lên. Chúng cho thấy cách MVC2 hoạt động. Tôi nhận được mono từ git và biên dịch từ các nguồn từ trang web chính thức đang tụt lại phía sau. Và mono trong kho aptitude cũng là phiên bản rất cũ. – sed

+0

Bạn đã thiết lập log4net chưa?TypeFactory (tham chiếu trong WebRazorHost) sử dụng log4net. –

Trả lời

20

Sự cố ở số Web.config nằm trong thư mục /Views. Tham số system.web.webPages.razorhost phải khớp chính xác với phiên bản MVC.

Ví dụ: nếu bạn có MVC 5.2.2.0 thì nó sẽ trông giống như <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />.

-1

Giống như Stan nói. Kiểm tra phiên bản System.Web.MVC đang thực hiện "nhấp chuột phải> Thuộc tính" tại thư mục Tham khảo (trong dự án của bạn). Sau đó, cập nhật dòng đó trong số /views/web.config của bạn.

0

Cái này phù hợp với tôi. Tôi đã thay đổi Web.config trong thư mục Views, phiên bản Mvc là 5.2.3.0 theo phiên bản Mvc của tôi. Ví dụ: <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Tôi đã thay đổi Phiên bản của mình từ 5.2.0.0 thành 5.2.3.0.

2

Phiên bản MVC của dự án của bạn phải khớp với phiên bản của MvcWebRazorHostFactory, nó phải giống nhau. Tôi phải thay đổi phiên bản thành 5.2.3.0 (trong tệp Views/Web.config).

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0 

Nếu bạn không biết phiên bản nào của MVC bạn đang sử dụng trong dự án của bạn, sau đó đi đến dự án -> Chỉnh sửa tài liệu tham khảo -> sau đó ở phía bên phải, dưới mục "tài liệu tham khảo được chọn" di chuyển xuống System.Web.Mvc nơi nên xem bạn đang sử dụng phiên bản nào. Đây là cách tôi phát hiện ra trong cộng đồng Xamarin Studio.

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