[英]Is there any way to write system independent MVC applications?
在過去的兩天里,我嘗試在Mono上運行MVC4示例互聯網應用程序(在VisualStudio 2010內部創建的應用程序:File-> New-> MVC4 webApllication-> Internet應用程序(帶Razor)),以便檢查我是否可以使用Linux來托管任何真正的MVC應用程序。
起初 - 我嘗試使用Xamarian Studio和.NET運行它 - 沒有問題:它顯示,啟動頁面,我可以注冊,登錄 - >很棒。
然后我只是從.NET切換到Mono,一切都崩潰了。
然后我看到了啟動頁面,但嘗試注冊拋出:
System.MissingMemberException延遲初始化的類型沒有公共的無參數構造函數。
當我刷新頁面時,上面的錯誤消失了但是當我嘗試注冊時我得到了另一個:
System.InvalidOperationException要調用此方法,“Membership.Provider”屬性必須是“ExtendedMembershipProvider”的實例。
我放棄 :/
根據這個:
http://mono-project.com/Compatibility
MVC4是兼容的,因為不使用異步控制器...所以問題是 - 我在這里做錯了什么或Mono兼容性是一個大謊言?
請允許我補充一點,通過兼容性,我的意思是:使用相同的代碼,不做任何改動(這是它在Java或QT中的工作原理)。
提前感謝您的意見。
最好的祝福。
關於為什么log4net和EntityFramework導致問題的第1和第2點,我認為這兩個框架(.NET和Mono)有不同的程序集。 這將是利用框架功能以及構建和優化.NET和Mono的方式的情況。
對於第3點,單聲道不能識別像SimpleMembership這樣的聲音。 試試這個: http : //goo.gl/hPnzjV
在放棄之前,我會在社區論壇上給單聲道團隊/帖子發消息......我聽說他們反應靈敏。 希望這可以幫助!
我不是來自Mono團隊,但下面是我的經驗以及我對如何從.NET遷移到Mono以及為什么會出現問題的觀察。
Microsoft不構建ASP.NET MVC或EF以支持Mono。 因此,Microsoft的原始程序集(在VS中本地復制)將無法按照您希望的Mono工作。 通常Mono在GAC中提供相應的修補程序集(具有相同的名稱),因此請使用sudo find / | grep name_of_assembly
sudo find / | grep name_of_assembly
首先檢查GAC中已存在哪些程序集,然后從Mono / Linux上的部署文件夾中刪除它們。 我們確實看到Microsoft和Xamarin在兼容性方面進行了合作,但是他們需要時間來完成所有工作。
不要在Windows上使用Xamarin Studio來測試。 不,這仍然不可靠,因為它仍然使用.NET。 你需要在Linux上使用MonoDevelop。
現在提出問題,1和2是顯而易見的。 Mono在GAC中附帶了一個log4net版本,但它並不是最新版本。 因此,如果您願意,可以使用您自己的副本。 EF 6是微軟的第一個開源版本,因此使用最新版本可以減少Mono上的問題。
對於3,我認為你將Microsoft的MVC 4程序集復制到Mono / Linux。 請刪除需要修補的內容,然后在GAC中使用Mono的內容。
今天不要指望Java或Qt級別的兼容性,因為Java花了很多年才達到這個水平。 你太幸運了,看不到Java的黃金時間,而.NET / Mono即將到來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.