2012-03-10 20 views
6

Tôi đang cố gắng để có được ASP.NET Web API beta mới (dự án VS Web API mặc định năm 2010) chạy trên Ubuntu 10.04 với Mono 2.10.8.1. Thật không may tôi đã thất bại thảm hại trong mọi nỗ lực của tôi cho đến nay. Ngoại lệ "có ý nghĩa" nhất mà tôi nhận được là:ASP.NET Web API (beta) có chạy với Mono (ổn định) mới nhất không?

System.TypeLoadException: Could not load type 'RestTest.Controllers.ValuesController' from assembly 'RestTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 
    at (wrapper managed-to-native) System.Type:type_is_assignable_from (System.Type,System.Type) 
    at System.Type.IsAssignableFrom (System.Type c) [0x00000] in <filename unknown>:0 
    at System.Web.Mvc.AreaRegistration.IsAreaRegistrationType (System.Type type) [0x00000] in <filename unknown>:0 
    at System.Web.Mvc.TypeCacheUtil+<>c__DisplayClass1.<FilterTypesInAssemblies>b__0 (System.Type type) [0x00000] in <filename unknown>:0 
    at System.Linq.Enumerable+<CreateWhereIterator>c__Iterator35`1[System.Type].MoveNext() [0x00000] in <filename unknown>:0 
    at System.Collections.Generic.List`1[System.Type].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0 
    at System.Collections.Generic.List`1[System.Type]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0 
    at System.Linq.Enumerable.ToList[Type] (IEnumerable`1 source) [0x00000] in <filename unknown>:0 
    at System.Web.Mvc.TypeCacheUtil.GetFilteredTypesFromAssemblies (System.String cacheName, System.Predicate`1 predicate, IBuildManager buildManager) [0x00000] in <filename unknown>:0 
    at System.Web.Mvc.AreaRegistration.RegisterAllAreas (System.Web.Routing.RouteCollection routes, IBuildManager buildManager, System.Object state) [0x00000] in <filename unknown>:0 
    at System.Web.Mvc.AreaRegistration.RegisterAllAreas (System.Object state) [0x00000] in <filename unknown>:0 
    at System.Web.Mvc.AreaRegistration.RegisterAllAreas() [0x00000] in <filename unknown>:0 
    at RestTest.WebApiApplication.Application_Start() [0x00000] in <filename unknown>:0 
    at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) 
    at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 

Tôi không nghĩ có điều gì sai với lớp "ValuesController" thực tế. Về cơ bản nó là một lớp học trống. Thay vào đó có vẻ là một vấn đề với lớp cơ sở được gọi là "ApiController" được phân phối với gói NuGet "AspNetWebApi.Core.4.0.20126.16343" (System.Web.Http.dll). Tôi kiểm tra tất cả các thư viện mới với "MoMA" (Mono Migration Analyzer) và kết quả là một vài phương pháp dường như chưa được thực hiện.

Vì vậy, câu hỏi của tôi là: Có ai biết khi nào ASP.NET Web API có thể được sử dụng cùng với Mono không? Có cách nào để có được nó chạy anyway (có thể bằng cách sử dụng Microsoft libs thay vì Mono)?

Phụ Lục:

nhanh lưu ý đối với những cố gắng để chạy một dự án MVC4 thường xuyên trên mono với cấu hình ở trên. Tôi gặp vấn đề nhỏ vì một phương thức - cụ thể là AllowOnlyFipsAlgorithms() - chưa được triển khai. Nó được gọi là một nơi nào đó trong "System.Web.Optimization" bởi "CreateHashAlgorithm" và để có được dự án của tôi chạy, tôi đã phải loại bỏ tất cả các tham chiếu đến thư viện này. Có, bạn phải làm mà không có tất cả các khả năng đóng gói CSS/Javascript mới và gọn gàng hiện tại, nhưng ít nhất bạn cũng có được trang web của mình.

+0

Trong thời gian chờ đợi, tôi đã thử sử dụng [Mono 2.11.0] mới nhất (http://www.go-mono.com/mono-downloads/download.html) và xây dựng thời gian chạy và máy chủ trực tiếp từ các nguồn. Tuy nhiên, tôi gặp phải một vài ngoại lệ trong quá trình khởi động và do đó tôi thậm chí không thể có được trang web đang chạy (làm việc với 2.10.8.1) cho phép các dịch vụ đơn lẻ dựa trên API Web. – UnclePaul

Trả lời

1

Có thể nhưng có thể là một nỗi đau. Hãy xem xét servicestack.net chạy cả trên đơn và cửa sổ.

+2

Tôi chưa từng nghe về ServiceStack trước đây. Nó có vẻ ấn tượng nhanh, đi kèm với một chức năng lớn và tôi chắc chắn phải kiểm tra nó ra tại một số điểm. Nói chung nó có vẻ là một lựa chọn thực sự tốt cho những người khác đang bắt đầu tươi và có thể tự do lựa chọn thư viện của họ. Đáng tiếc tôi không thể. – UnclePaul

+0

@UnclePaul về việc chọn các thư viện mà tôi không thể đồng ý nhiều hơn về các vấn đề của bạn. Trên một số dự án di sản mà bảo trì (chỉ) là mục tiêu chính thay đổi DAL có thể rất quan trọng. –

+0

dịch vụ ngăn xếp hoạt động rất tốt chống lại mono, chúng tôi sử dụng nó trong một môi trường sản xuất và nó là rất ổn định, không giống như asp mvc trên mono – sungiant