CentOS上 Mono 3.2.8运行ASP.NET MVC4经验
周一到周三,折騰了兩天半的時間,經歷幾次周折,在小蝶驚鴻的鼎力幫助下,終于在Mono 3.2.8上運行成功MVC4。在此總結經驗如下:
系統平臺的版本:
CentOS 6.5 Mono 3.2.8 Jexus 5.5.1?
VS2012 英文Ultimate版 由于采用的是英文版本,因此下面圖片也都是英文版的界面。
完成工作:制作一個完整的MVC4 Internet應用(本例不含數據庫,數據庫的訪問在以后的文章中談),將其部署在Linux + Mono + Jexus環境。
步驟:
1、使用 .NET Framework 4生成MVC4;
2、卸載EF;同時刪除或注釋與EF相關的應用;
3、發布;
按上述步驟的詳細操作如下:
1、使用 .NET Framework 4生成MVC4
在生成MVC4時,目前情況下,一定要使用?.NET Framework 4,不要使用?.NET Framework?4.5,否則,由于?.NET Framework 4.5雖然很好很強大,但由于它太新,在Mono上運行至今我未找到有效的完整運行辦法,包括Windows Server 2008,如果不安裝最新的Service Pack,都無法支持?.NET Framework?4.5。
因此,如下圖,在創建新項目時,請注意保證使用?.NET Framework?4(見圖片上部中間),
?我創建是一個完整的Internet應用,如下圖:
?2、卸載EF;同時刪除或注釋與EF相關的應用
從小蝶驚鴻的文章Linux.Net學習手記(5),知道需要卸載EF。到“工具”菜單找到NuGet操作命令窗口或者管理器界面,將EntityFramework卸載。
注意雖然EF卸載可以把Dll引用及根目錄下的Web.config文件進行修改,但對于MVC4的Internet應用來說,里面有一些需要使用EF的代碼卻不會自動卸載,需要手動刪除或者注釋。因為自己既然想使用ASP.NET MVC4運行在Linux上,就不打算使用MS SQL Server數據庫,而是使用MySQL數據庫,訪問MySQL方式采取ADO.NET。所以,EF相關代碼可以全部屏蔽。
首先,把Models目錄下的AccountModels文件刪除;然后,將Controllers目錄下的AccountController刪除;
生成解決方案(Ctrl + Shift + B),下面會有一些錯誤提示(我的有7、8個左右),按照錯誤提示,把錯誤提示的代碼注釋即可,這些代碼與創建用戶有關,使用了EF;直到生成的解決方案沒有錯誤,在VS下運行,確保通過;
3、發布
周折最多的地方就是發布了。最初,發布到本地文件系統,其設置是這樣的:
?注意“設置”中選擇了兩個選項:“發布前刪除所有現有文件”和“在發布期間預編譯”,結果這樣的發布,到Linux上后,出現了奇怪的結果:如果Controller中的Action返回的是字符串,即return "Hello, MVC4";,這樣的路由沒有問題;但如果返回的是ActionResult,即return View();就會出現錯誤信息!
小蝶驚鴻參與這個問題的解決,發現如果把第二項“在發布期間預編譯”選掉(如下圖),生成的發布文件放到Linux后,上述問題就解決了!
?
?
至此,一個完整的MVC4應用就可以運行在Linux之上了。
特別需要說明的是:本文經驗只適用于Mono 3.2.8,其它版本的Mono可以參考,但無法保證適用性,因為版本差異貌似很大。
本文所述過程詳細參考了Linux.Net學習手記(5),在實際操作過程中,發現在自己的這個操作中,即使不在Web.config中加入<globalization culture="zh-CN" uiCulture="en-US"/>,同時也不對Microsoft.Web.Infrastructure.dll進行刪除,MVC4運行也是正常的。估計這就是版本不同造成的差別吧。
感謝小蝶驚鴻、張善友和Jexus服務器作者宇內流云,他們的文章對我將.NET應用到Linux上幫助很大。
實際網站在Linux運行成功后,再與大家分享。
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/wusir/p/3666478.html
總結
以上是生活随笔為你收集整理的CentOS上 Mono 3.2.8运行ASP.NET MVC4经验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: div ul 宽度
- 下一篇: ZOJ 3471 压缩状态DP