2014-03-03 63 views
2

我試圖開始使用Mono框架並遇到許多問題,其中最新的一個問題讓我感到憤怒。我一直在尋找一個解決方案,並沒有能夠弄清楚這一點。使用Mono和MVC 4查看錯誤

環境
的Ubuntu 12.04(在Hyper-V虛擬機)
的Visual Studio 2012(完全更新)
ASP.NET MVC 4
.NET框架4
單3.4.0(拉和直接從git的使用make)
XSP Mono.WebServer2 0.2.0.0(也由GIT)編譯

我的單安裝遵循從this answer幾乎完全的說明。會發生什麼是:

  1. 我使用默認選項在VS 2012中創建一個新的MVC 4項目。
  2. 我使用文件系統發佈配置文件發佈所述應用程序而不更改任何引用的DLL的「複製本地」設置。
  3. 然後,將文件FTP到Ubuntu VM並將它們全部複製到網站主文件夾(/ var/www/mvc,我將其配置爲Apache2的默認文件夾)。
  4. cd /var/www/mvc在bash提示符下運行xsp4
  5. 擊中服務器/端口和接收此錯誤:

System.InvalidOperationException
視圖「索引」或它的主人沒有被發現或沒有視圖引擎支持搜索到的位置。以下地點搜索:
〜/瀏覽/首頁/的Index.aspx
〜/瀏覽/首頁/ Index.ascx
〜/查看/共享/的Index.aspx
〜/查看/共享/ Index.ascx
〜/瀏覽/首頁/ Index.cshtml
〜/瀏覽/首頁/ Index.vbhtml
〜/瀏覽/首頁/ Index.cshtml
〜/瀏覽/首頁/ Index.vbhtml

說明: HTTP 500.錯誤處理請求。
詳細信息:非網絡例外。異常來源(應用程序或對象的名稱):System.Web.Mvc。
異常堆棧跟蹤:

at System.Web.Mvc.ViewResult.FindView(System.Web.Mvc.ControllerContext context) [0x00000] in <filename unknown>:0 
at System.Web.Mvc.ViewResultBase.ExecuteResult(System.Web.Mvc.ControllerContext context) [0x00000] in <filename unknown>:0 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) in <filename unknown>:0 
at System.Web.Mvc.ControllerActionInvoker+<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() [0x00000] in <filename unknown>:0 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, System.Web.Mvc.ResultExecutingContext preContext, System.Func`1 continuation) [0x00000] in <filename unknown>:0 

版本信息:3.4.0(主/ 830c517星期五年02月28 16點03分26秒CST 2014); ASP.NET版本:4.0.30319.17020

我已經嘗試不同的編譯組合(目標4.5,而不是4.0,使用MVC 3,而不是4)removed WebPages.OAuth.dll,複製localed各種參數組合,以及詳盡的網絡搜索......所有無濟於事。這與我的Mono版本有關嗎? XSP?這個問題有沒有確定的解決方案?

UPDATE
如果我的目標是.NET Framework 4。5與MVC 4項目,誤差變化到這樣的:

System.IO.FileNotFoundException
無法加載文件或程序集「log4net的,版本= 1.2.11.0文化=中性公鑰= 669e0ddf0bb1aa2a」或之一它的依賴關係。
描述:HTTP 500.錯誤處理請求。
詳細信息:非網絡例外。異常來源(應用程序或對象的名稱):DotNetOpenAuth.Core。
異常堆棧跟蹤:

at DotNetOpenAuth.Logger.Create(System.String name) [0x00000] in <filename unknown>:0 
at DotNetOpenAuth.Logger.CreateWithBanner(System.String name) [0x00000] in <filename unknown>:0 
at DotNetOpenAuth.Logger..cctor() [0x00000] in <filename unknown>:0 
我沒有使用log4net的

+0

看起來想要呈現索引頁,你有沒有試過創建一個? –

+0

默認情況下,有一個由MVC 4模板創建的索引頁。 –

+0

在您的視圖文件夾中必須有應該包含Index.cshtml文件的主文件夾。如果您沒有索引文件,請手動添加。 – Cybercop

回答

4

經過幾天的研究,我學到了幾件事情,首先是Mono 3.x在Ubuntu 12.04上不受支持。因此,MVC 4在該操作系統上(以及大多數其他Linux操作系統的混淆)已經不存在了。對於未來的參考,我終於能夠得到MVC 3在Ubuntu 12.04的工作做了以下內容:

  1. 使用Hyper-V的虛擬機從ISO安裝Ubuntu 12.04(我會很樂意給上設置的細節,如果有人想他們)。
  2. 安裝所有Ubuntu更新(需要重新啓動)。
  3. 打開一個終端窗口(Ctrl + Alt + T)。
  4. (可選)安裝XRDP,允許遠程桌面連接到Ubuntu VM。由於鍵盤/鼠標映射很傻,我無法忍受使用* nix系統的Hyper-V的默認終端服務器窗口。

    sudo apt-get install xrdp

  5. (可選)使用ifconfig在終端得到,你可以使用遠程桌面連接虛擬機的IP地址。

  6. 安裝Apache2。

    sudo apt-get install apache2

  7. 安裝的Apache2螺紋DEV(需要XSP4,下面安裝)。

    sudo apt-get install apache2-threaded-dev

  8. 安裝Mono-運行時包。

    sudo apt-get install mono-runtime

  9. 安裝Mono-完整的軟件包。

    sudo apt-get install mono-complete

  10. 安裝XSP4(這是你可以使用一個發展非常輕量級的Web服務器)。

    sudo apt-get install mono-xsp4

  11. 安裝ASP.NET例子包。顯然,XSP4並沒有安裝它需要的所有東西,但需要單獨安裝一些ASP.NET組件才能工作。

    sudo apt-get install asp.net-examples

在此之後,你可以設置你的MVC 3網站的文件夾中/var/www和倉部署站點。使它工作,即這是非常重要的,某些組件將被複制到您的站點文件夾:

  • System.Web.Helpers
  • System.Web.Mvc
  • System.Web.Razor
  • System.Web.Routing
  • System.Web.WebPages
  • System.Web.WebPages.Razor
  • System.Web.WebPages.Deployment

因此,請確保將它們設置爲「複製本地」或找出正確版本在Windows系統上的位置,並手動將它們複製到您的站點文件夾。然後,你可以配置Apache和使用XSP4測試您的網站(再次,我會給細節,如果需要):

cd /var/www/sitefolder/ 
xsp4 

,它會顯示你是這樣的:

xsp4 
Listening on address: 0.0.0.0 
Root directory: /var/www/sitefolder 
Listening on port: 8080 (non-secure) 
Hit Return to stop the server. 

而且你可以打該虛擬機上的瀏覽器中的站點爲localhost:8080

希望這可以幫助未來的人。

+0

是什麼阻止你在Ubuntu 12上編譯單聲道源代碼? – TimothyP

+0

對我來說(在debian伸展)解決方案是複製System.Web.Helpers.dll System.Web.Mvc.dll System.Web.Razor.dll System.Web.WebPages.Razor.dll – Spikolynn

+0

面對MVC 3上的相同問題3 AWS ubuntu 16 單聲道5 單聲道服務器4。 –