2012-03-10 2 views
6

Mono 2.10.8.1을 사용하여 Ubuntu 10.04에서 실행되는 새로운 ASP.NET 웹 API 베타 (VS 2010 기본 웹 API 프로젝트)를 얻으려고합니다. 불행히도 나는 지금까지 모든 시도에서 비참하게 실패했다. 내가 가진 가장 "의미"예외는 다음과 같습니다 :ASP.NET 웹 API (베타)가 최신 모노 (안정)로 실행됩니까?

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 

나는 실제 "ValuesController"클래스와 아무 잘못이 있다고 생각하지 않습니다. 그것은 기본적으로 빈 클래스입니다. 대신 NuGet 패키지 "AspNetWebApi.Core.4.0.20126.16343"(System.Web.Http.dll)과 함께 배포되는 "ApiController"라는 기본 클래스에 문제가있는 것 같습니다. "MoMA"(Mono Migration Analyzer)를 사용하여 모든 새 라이브러리를 확인한 결과, 아직 구현되지 않은 것 같아요.

제 질문은 다음과 같습니다. ASP.NET 웹 API를 Mono와 함께 사용할 수있는 경우를 알고 있습니까? 어쨌든 (아마 Mono 대신 Microsoft libs를 사용하여) 실행할 수있는 방법이 있습니까?

부록 : 위의 구성으로 모노에 정기적 MVC4 프로젝트를 실행하려고들에게

빠른 노트. 한 가지 방법, 즉 AllowOnlyFipsAlgorithms()가 아직 구현되지 않았기 때문에 약간의 문제가 발생했습니다. 그것은 "System.Web.Optimization"에서 "CreateHashAlgorithm"에 의해 호출되었고 프로젝트를 실행하기 위해이 라이브러리에 대한 모든 참조를 제거해야했습니다. 예, 지금 새롭고 깔끔한 CSS/Javascript 번들링 기능을 모두 사용하지 않아도되지만 적어도 사이트를 업그레이드해야합니다.

+0

그동안 최신 [Mono 2.11.0] (http://www.go-mono.com/mono-downloads/download.html)을 사용해 보았고 소스에서 직접 런타임 및 서버를 빌드했습니다. 그러나 시작 도중에 몇 가지 예외가 발생하여 웹 API를 기반으로하는 서비스는 물론 웹 사이트를 실행할 수도 (2.10.8.1로 작업) 할 수도 없었습니다. – UnclePaul

답변

1

고통을 줄 수도 있지만 가능합니다. 모노와 윈도우 모두에서 실행되는 servicestack.net을 고려하십시오.

+2

전에 ServiceStack에 대해 들어 보지 못했습니다. 그것은 인상적인 속도로 보인다, 큰 기능을 함께 제공하고 확실히 어떤 시점에서 그것을 확인해야합니다. 전반적으로 신선한 것으로 시작하고 자유롭게 도서관을 선택할 수있는 사람들에게 정말 좋은 대안 인 것 같습니다. 불행히도 나는 할 수 없다. – UnclePaul

+0

라이브러리 선택에 대한 @UnclePaul 귀하의 문제에 대해 더 이상 동의 할 수 없습니다. 유지 보수가 유일한 목표 인 일부 기존 프로젝트에서 DAL을 변경하는 것이 매우 중요 할 수 있습니다. –

+0

서비스 스택은 모노에 비해 매우 잘 작동하며, 우리는이를 프로덕션 환경에서 사용하며 모노의 ASP mvc와는 달리 매우 안정적입니다. – sungiant