|
Mono 2.10支持MVC3和Razor的消息著實讓我興奮了好一會兒,因為支持MVC3后,我就有可能做Kooboo CMS3兼容Mono的相關測試工作??墒菦]一會兒,我就發現,離我的目標還是有一點距離。不曉得是Mono 2.10本身存在的bug,還是我的原因,我總是無法很完美的在Mono運行起MVC3的站點,即使是用默認的MVC3站點模板創建的非常簡單的站點也是一樣。長期生活在微軟Windows/.NET平臺的滋潤環境中,沒有Linux平臺的使用經驗和基于配置文件的Web部署習慣,讓我花了不少的時間來解決原本很簡單的問題的。從使用XSP失敗,到折騰Windows下使用Nginx+FastCGI來Host ASP.NET MVC3站點,之后再花了半個周末如癡如醉的研究openSUSE下的Mono部署。雖然沒有解決MVC3的運行問題,但是總算還是搞清楚了如何在Mono部署ASP.NET站點,以及簡單的linux平臺(openSUSE)操作。下面就簡單的記錄一下這些艱難歷程:
環境準備
在VS2010,用默認的MVC3站點模板創建一個簡單MVC站點,有簡單的首頁和登錄頁面,并且在Bin下面要私有部署MVC3的相關依賴程序集除了Microsoft.Web.Infrastructure.dll。站點下載。
1.使用Mono 2.10的XSP服務器失敗
Mono支持跨平臺,當然包括Windows平臺,而且在Windows平臺下面,它也提供了一種非常簡單的方式來讓我們方便的通過Mono啟動Web站點,就這是XSP。在Mono安裝成功之后,它會在目錄的右鍵菜單中增加一個菜單項“XSP 2 Web Server Here 2.10”,而我們只需要簡單的選擇這個菜單項就可以將目錄作為Web站點用Mono運行起來。而這里的XSP2,表示,我們使用的是ASP.NET 2.0,如果你需要用ASP.NET 4.0,那你可以通過修改注冊表的方式再增加一個類似的菜單項,只是把執行的批處理由xsp2.bat改為xsp4.bat就行了。這原本是最為簡單的測試方案,而且我使用Mono2.8來啟動MVC2站點也是沒有任何問題。結果在Mono 2.10中,XSP的站點死活就是不響應,那個請求讓他運行一萬年,它也是在那邊loading,也不timeout。問題通過各種努力,最終無力解決。
2.在Windows平臺下使用Nginx+FastCGI-mono-server架起MVC3站點,但是表單提交后,ModelBinder無法正常綁定Action Model.
XSP行不通,只能想其它辦法。在嘗試了在Windows使用Apache失敗之后,選擇了Nginx+FastCGI來架構ASP.NET站點。在園子里面找到這篇介紹在Mono架設ASP.NET站點,不過根據這篇文章我始終沒有搞明白具體如何配置,好像很復雜的樣子,還要下載它提供的文件,嘗試無果。幸好在Mono的官方站點找到Nginx的Mono配置文件,不過是Linux下面的配置。沒關系,看那配置也就那幾個步驟,應該很簡單。期間也遇到過一些問題,不過都順利解決,下面簡單記錄一下Nginx+Mono在Windows下部署ASP.NET站點的步驟:
1)從Nginx 的官方網站下載最新的Nginx軟件,純綠色,無需安裝。下載之后,解壓到某一目錄,這里是:E:/Mono/nginx-0.9.4
2)為了方便,把你的ASP.NET站點,也拷到Nginx目錄下面,我這邊使用的目錄名稱是:Mono_MVC3
3)進入conf目錄下,找到nginx.conf,找到location /{},我們把這段配置改為我們自己的值:
location / {
root Mono_MVC3;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
NET技術:ASP.NET MVC3 on Mono的折騰(一):Windows下的部署,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。