我正在尝试在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
答案 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" />