href中的Mono ASP.NET MVC代号会导致System.NotImplementedException

时间:2015-02-21 22:54:58

标签: asp.net asp.net-mvc mono

我正在尝试在Ubuntu 14.04.1上使用Mono 3.12.0制作一个ASP.NET应用程序。每当我尝试在_Layout.cshtml的href中使用波浪线时,我会得到System.NotImplementedException

我使用MonoDevelop制作了3种不同的ASP.NET MVC Razor解决方案,每种解决方案都有同样的问题。

我的_Layout.cshtml文件如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    <link href="~/css/normalize.css" rel="stylesheet" type="text/css" />
    <link href="~/css/screen.css" media="screen, projection" rel="stylesheet" type="text/css" />
    <link href="~/css/print.css" media="print" rel="stylesheet" type="text/css" />
    <!--[if IE]>
        <link href="~/css/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
    <![endif]-->
</head>
<body>
    @RenderBody()
</body>
</html>

我也尝试使用相同的错误消息进行Url.Content("~/css/file.css")

有人知道发生了什么吗?

更新

  • System.Web.Razor是版本3.0.0.0
  • System.Web.Mvc是版本5.2.0.0
  • System.Core是版本4.0.0.0

更新2

完整的错误是:

System.NotImplementedException
The requested feature is not implemented.

Description: HTTP 500.Error processing request.

Details: Non-web exception. Exception origin (name of application or object): System.Web.

Exception stack trace:
at System.Web.HttpContextWrapper.GetService (System.Type serviceType) [0x00000] in <filename unknown>:0
at System.Web.WebPages.UrlRewriterHelper.IsUrlRewriterTurnedOn (System.Web.HttpContextBase httpContext) [0x00000] in <filename unknown>:0
at System.Web.WebPages.UrlRewriterHelper.WasRequestRewritten (System.Web.HttpContextBase httpContext) [0x00000] in <filename unknown>:0
at System.Web.WebPages.UrlUtil.GenerateClientUrlInternal (System.Web.HttpContextBase httpContext, System.String contentPath) [0x00000] in <filename unknown>:0
at System.Web.WebPages.UrlUtil.GenerateClientUrlInternal (System.Web.HttpContextBase httpContext, System.String contentPath) [0x00000] in <filename unknown>:0
at System.Web.WebPages.UrlUtil.GenerateClientUrl (System.Web.HttpContextBase httpContext, System.String basePath, System.String path, System.Object[] pathParts) [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageExecutingBase.Href (System.String path, System.Object[] pathParts) [0x00000] in <filename unknown>:0
at ASP._Page_Views_Shared__Layout_cshtml.Execute () [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy () [0x00000] in <filename unknown>:0
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy () [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy (System.Web.WebPages.WebPageContext pageContext, System.IO.TextWriter writer, System.Web.WebPages.WebPageRenderingBase startPage) [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy (System.Web.WebPages.WebPageContext pageContext, System.IO.TextWriter writer) [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase+<>c__DisplayClass7.<RenderPageCore>b__6 (System.IO.TextWriter writer) [0x00000] in <filename unknown>:0
at System.Web.WebPages.HelperResult.WriteTo (System.IO.TextWriter writer) [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageExecutingBase.WriteTo (System.IO.TextWriter writer, System.Web.WebPages.HelperResult content) [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase.Write (System.Web.WebPages.HelperResult result) [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase.RenderSurrounding (System.String partialViewName, System.Action`1 body) [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase.PopContext () [0x00000] in <filename unknown>:0
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy (System.Web.WebPages.WebPageContext pageContext, System.IO.TextWriter writer, System.Web.WebPages.WebPageRenderingBase startPage) [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.InvokeActionResultFilterRecursive (IList`1 filters, Int32 filterIndex, System.Web.Mvc.ResultExecutingContext preContext, System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) [0x00000] in <filename unknown>:0
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive (IList`1 filters, Int32 filterIndex, System.Web.Mvc.ResultExecutingContext preContext, System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) [0x00000] in <filename unknown>:0

Version Information: 3.12.0 (tarball Sat Feb 7 19:12:57 UTC 2015); ASP.NET Version: 4.0.30319.17020

1 个答案:

答案 0 :(得分:1)

this commit on GitHub表示它添加了缺少的位来支持MVC 5.2。该提交于2014年10月提交。

上面的提交显示导致错误的函数已更新,如下所示:

public override object GetService (Type serviceType) 
{ 
    throw new NotImplementedException ();
    return ((IServiceProvider)w).GetService (serviceType); 
} 

根据您的帖子,您运行的是3.12版。如果我查看the latest 3.12 version,那么提交还没有:

public override object GetService (Type serviceType) 
{ 
    throw new NotImplementedException (); 
}

看来你必须自己编译最新版本,或者等到下一个Mono版本。

考虑到帖子中的链接,另一个(未经测试的)解决方法是不使用代字号:

<link href="/css/normalize.css" rel="stylesheet" type="text/css" />