2013-01-02 37 views
5

差不多正如標題所說 - 我一直試圖讓這個打算按:Mono是否能夠在mod_mono中託管ASP.NET MVC WebAPI呢?

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

而且雖然我可以得到一個很簡單的ASP MVC 4個網站去 - 任何與參與給人的WebAPI項目我500s和非常神祕的錯誤,在我的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 

我猜不是,但想知道我是否做了一些基本的錯誤!

乾杯。

回答

7

從Mono 3.0.2開始,ASP.NET WebAPI尚不受支持。 WebAPI使用HttpRequest.GetBufferlessInputStream()來獲取HTTP請求數據,但這在Mono中尚未實現。如果您通過上面提到的錯誤(可能是由於Web.config中的配置不正確),您將遇到類似於此錯誤的錯誤:

缺少方法System.Web.HttpRequest :: GetBufferlessInputStream()in assembly /opt/mono-3.0.0/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll,在彙編/ tmp/www-data-temp-aspnet-0/2956977a/assembly/shadow/5cf10065/cf4140da_93b040bf_00000001/System.Web.Http.WebHost.dll

有關錯誤報告,請參閱https://bugzilla.xamarin.com/show_bug.cgi?id=8008

+0

感謝丹尼爾 - 你知道這是否是阻止WebAPI工作的唯一阻止者,或者是Mono運行時所需的長期改變之路的第一步? –

+0

@KieranBenton我不是100%肯定 - 'GetBufferlessInputStream'沒有被執行是我遇到的第一個主要障礙,我不確定解決它的最佳方式。目前,它可能值得使用ServiceStack,因爲它旨在在Mono上運行,並且擁有很好的社區支持。 –

+2

HttpRequest.GetbufferlessInputStream()現在顯然是用[this pull request]修復的(https://github.com/mono/mono/pull/561#issuecomment-13977848)。 – MCattle

2

ServiceStack is no longer open source

你可以看看ServiceStack。它是WebApi的一個很好的支持替代品,它也可以在Mono上運行。它非常快速,可擴展且強大;其文檔可以找到herehere

+6

ServiceStack不再是開源https://servicestack.net/pricing –

+1

感謝Donny,我意識到......這篇文章是在開源的時候發佈的。 –

相關問題