2013-01-02 4 views
5

Praticamente come dice il titolo - ho cercato di ottenere questo andare come da:Mono è in grado di ospitare ancora ASP.NET MVC WebAPI in mod_mono?

http://www.integratedwebsystems.com/2011/12/get-started-with-amazon-ec2-run-your-net-mvc3-razor-site-in-the-cloud-with-linux-mono-2/

E mentre posso ottenere un semplice sito ASP MVC 4 andare - qualsiasi cosa con un progetto WebAPI coinvolti dà mi 500s ed errori molto criptici nei miei log di Apache:

System.NullReferenceException: Object reference not set to an instance of an object 
    at System.Web.Util.HttpEncoder.GetCustomEncoderFromConfig() [0x00000] in <filename unknown>:0 
    at System.Lazy`1[System.Web.Util.HttpEncoder].InitValue() [0x00000] in <filename unknown>:0 

sto indovinando no, ma vuole sapere se sto facendo qualcosa di sbagliato di base!

Cheers.

risposta

7

A partire da Mono 3.0.2, ASP.NET WebAPI non è ancora supportato. WebAPI utilizza HttpRequest.GetBufferlessInputStream() per ottenere i dati della richiesta HTTP, ma questo non è ancora stato implementato in Mono. Se si superano gli errori menzionati sopra (che potrebbero essere dovuti a una configurazione errata in Web.config), si verificherà un errore simile a questo errore:

Metodo mancante System.Web.HttpRequest :: GetBufferlessInputStream() in assembly /opt/mono-3.0.0/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll, referenziato in assembly/tmp/www-data-temp-aspnet-0/2956977a/assembly/shadow/5cf10065/cf4140da_93b040bf_00000001/System.Web.Http.WebHost.dll

Vedere https://bugzilla.xamarin.com/show_bug.cgi?id=8008 per il bug report.

+0

Grazie Daniel: sai se questo è l'UNICO ostacolo alla realizzazione di WebAPI o solo il primo di una lunga serie di modifiche richieste al runtime Mono? –

+0

@KieranBenton Non sono sicuro al 100% - 'GetBufferlessInputStream' non è stato implementato è stato il primo ostacolo principale in cui mi sono imbattuto e non ero sicuro del modo migliore per aggirarlo. Al momento potrebbe valere la pena di utilizzare invece ServiceStack, poiché è progettato per funzionare su Mono e ha un ottimo supporto per la comunità. –

+2

HttpRequest.GetbufferlessInputStream() è ora apparentemente risolto con [questa richiesta pull] (https://github.com/mono/mono/pull/561#issuecomment-13977848). – MCattle

2

ServiceStack is no longer open source

È possibile dare un'occhiata a ServiceStack. È un'alternativa ben supportata a WebApi e funziona anche su Mono. È molto veloce, estensibile e potente; la sua documentazione può essere trovata here e here.

+6

ServiceStack non è più opensource https://servicestack.net/pricing –

+1

Grazie Donny, sono consapevole che ... questo post è stato creato mentre era ancora opensource. –