Mono MVC3无法映射路径

时间:2011-12-04 22:42:17

标签: asp.net-mvc-3 mono fastcgi lighttpd

我正在努力让一个MVC3应用程序在mono下工作,一切顺利,直到我部署到我的服务器......

我目前正在接受:

Failed to map path '/projects/_ViewStart.cshtml'

System.InvalidOperationException: Failed to map path '/projects/_ViewStart.cshtml'
  at System.Web.HttpRequest.MapPath (System.String virtualPath, System.String baseVirtualDir, Boolean allowCrossAppMapping) [0x00000] in <filename unknown>:0 
  at System.Web.HttpRequest.MapPath (System.String virtualPath) [0x00000] in <filename unknown>:0 
  at System.Web.Hosting.HostingEnvironment.MapPath (System.String virtualPath) [0x00000] in <filename unknown>:0 
  at System.Web.Hosting.DefaultVirtualPathProvider.FileExists (System.String virtualPath) [0x00000] in <filename unknown>:0 
  at System.Web.WebPages.FileExistenceCache.FileExists (System.String virtualPath) [0x00000] in <filename unknown>:0 
  at System.Web.WebPages.VirtualPathFactoryManager.PageExistsInVPP (System.String virtualPath, Boolean useCache) [0x00000] in <filename unknown>:0 
  at System.Web.WebPages.VirtualPathFactoryManager.PageExists (System.String virtualPath, Boolean useCache) [0x00000] in <filename unknown>:0 
  at System.Web.WebPages.WebPageExecutingBase.FileExists (System.String path, Boolean useCache) [0x00000] in <filename unknown>:0 
  at System.Web.WebPages.StartPage.GetStartPage (System.Web.WebPages.WebPageRenderingBase page, System.String fileName, IEnumerable`1 supportedExtensions) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.RazorView.RenderView (System.Web.Mvc.ViewContext viewContext, System.IO.TextWriter writer, System.Object instance) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.BuildManagerCompiledView.Render (System.Web.Mvc.ViewContext viewContext, System.IO.TextWriter writer) [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) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.ControllerActionInvoker+<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19 () [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 

错误。我可以确认所有文件和DLL都存在,但路径看起来不正确,当然它应该在Views文件夹中查找存在的东西?

我需要设置某种设置以确保它在正确的Views位置查找吗?我还注意到文件路径前没有“〜”字符......

我环顾网并尝试了各种解决方案,但似乎都没有。

2 个答案:

答案 0 :(得分:0)

看看你的Apache配置,对我说它

  

运行失败'/ usr / bin / mod-mono-server2 --filename / tmp / mod_mono_server_bla --applications / testmono:/ var / www / ModMonoMvc3Application --nonstop(null)(null)(null)(null) (null)(null)(null)'。原因:没有这样的文件或目录

因为我误解了配置选项AddMonoApplications。它应该是这样的:

# "default" is defined in mods-available/mod_mono.conf
AddMonoApplications default "/testmono:/var/www/ModMonoMvc3Application"

<Location /testmono/>
    SetHandler mono
</Location>

我不小心写了“bla”而不是“default”,因为我认为它是应用程序名称,但事实上它定义了启动哪个服务器可执行文件。

答案 1 :(得分:0)

直接调用

时遇到同样的错误

HttpContext.Current.Server.MapPath("/")

HttpContext.Current.Server.MapPath(Path.DirectorySeparatorChar.ToString()) 

然而这有效:

HttpContext.Current.Server.MapPath("~")