.Net 4.5与MVC4的错误

时间:2013-01-17 10:43:02

标签: asp.net-mvc-4 .net-4.5 asp.net-4.5

我正在努力解决框架4.5问题。我们的asp.net mvc4网络应用程序在安装了.net 4.0的2008R2服务器上运行良好但是当我们将框架升级到.net 4.5时,我们似乎遇到了一些讨厌的错误:

  

无法加载类型' ...'从汇编' ...'因为方法' ...'没有实施(没有RVA)

当使用..netpx视图的asp.net生成的.cs代码中的反射获取类型时,框架会抛出此异常异常。我们得到了一个YSOD:

  

' /'中的服务器错误应用。       无法加载类型' ASP.views_beherenecli_actielijstecli_index_aspx'来自assembly' App_Web_index.aspx.aeda16c.y-wvrppj,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'因为方法' __ RenderContent3'没有实施(没有RVA)。       描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

     

异常详细信息:System.TypeLoadException:无法加载类型' ASP.views_beherenecli_actielijstecli_index_aspx'来自assembly' App_Web_index.aspx.aeda16c.y-wvrppj,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'因为方法' __ RenderContent3'没有实施(没有RVA)。

     

来源错误:       在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

     

堆栈跟踪:       [TypeLoadException:无法加载类型&#39; ASP.views_beherenecli_actielijstecli_index_aspx&#39;来自assembly&#39; App_Web_index.aspx.aeda16c.y-wvrppj,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null&#39;因为方法&#39; _ RenderContent3&#39;没有实施(没有RVA)。]          System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly,String name,Boolean throwOnError,Boolean ignoreCase,ObjectHandleOnStack type)+0          System.Reflection.RuntimeAssembly.GetType(String name,Boolean throwOnError,Boolean ignoreCase)+73          System.Web.Compilation.BaseTemplateBuildProvider.GetGeneratedType(CompilerResults results,Boolean useDelayLoadTypeIfEnabled)+128          System.Web.Compilation.BuildProvider.CreateBuildResult(CompilerResults results)+103          System.Web.Compilation.BuildProvider.GetBuildResult(CompilerResults results)+23          System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)+599          System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath,布尔noBuild,布尔allowCrossApp,布尔allowBuildInPrecompile,布尔throwIfNotFound,布尔ensureIsUpToDate)571          System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context,VirtualPath virtualPath,Boolean noBuild,Boolean allowCrossApp,Boolean allowBuildInPrecompile,Boolean throwIfNotFound,Boolean ensureIsUpToDate)+203          System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath,HttpContext context,Boolean allowCrossApp,Boolean throwIfNotFound)+249          System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath)+36          System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext,String virtualPath,Func 2 virtualPathExists) +55 System.Linq.WhereSelectListIterator 2.MoveNext()+ 245          System.Linq.Enumerable.FirstOrDefault(IEnumerable 1 source, Func 2谓词)+215          System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath,HttpContextBase httpContext,Func 2 virtualPathExists, IDisplayMode currentDisplayMode) +27 System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List 1个位置,String name,String controllerName,String areaName,String cacheKey,String []&searchLocations)+402          System.Web.Mvc.VirtualPathProviderViewEngine.GetPath(ControllerContext controllerContext,字符串[]的位置,字符串[] areaLocations,字符串locationsPropertyName,字符串名,字符串controllerName,字符串cacheKeyPrefix,布尔useCache将,字符串[]&安培; searchedLocations)942          System.Web.Mvc.VirtualPathProviderViewEngine.FindView(ControllerContext controllerContext,String viewName,String masterName,Boolean useCache)+206          System.Web.Mvc。&lt;&gt; c _DisplayClassc.b_ b(IViewEngine e)+47          System.Web.Mvc.ViewEngineCollection.Find(Func 2 lookup, Boolean trackSearchedPaths) +176 System.Web.Mvc.ViewResult.FindView(ControllerContext context) +110 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +147 System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func 1续)+613          System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList`1过滤器,ActionResult actionResult)+263          System.Web.Mvc.Async。&lt;&gt; c _DisplayClass25.b_ 22(IAsyncResult asyncResult)+240          System.Web.Mvc。&lt;&gt; c _DisplayClass1d.b_ 18(IAsyncResult asyncResult)+28          System.Web.Mvc.Async。&lt;&gt; c _DisplayClass4.b_ 3(IAsyncResult ar)+15          System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+53          System.Web.Mvc.Async。&lt;&gt; c _DisplayClass4.b_ 3(IAsyncResult ar)+15          System.Web.Mvc。&lt;&gt; c _DisplayClass8.b_ 3(IAsyncResult asyncResult)+42          System.Web.Mvc.Async。&lt;&gt; c _DisplayClass4.b__3(IAsyncResult ar)+15          System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+606          System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+288

问题:我是唯一有这个问题的人吗?有谁知道如何解决这个问题或知道修复?

注意:代码是在带有框架4.0的构建服务器上编译的。这个问题似乎与.Net 4.5有关,因为当我们降级到4.0时,问题就会消失。

我们尝试过的事情:

  • 删除临时ASP.NET文件夹
  • web.config中的
  • 使用编译元素和targetFramework =&#34; 4.5&#34;属性。

2 个答案:

答案 0 :(得分:1)

使用C#&#34;动态&#34; HTML助手方法中的关键字似乎是问题的根源。主渲染方法获得的RVA值为0,这导致&#34;方法没有实现(无RVA)异常。&#34; asp.net尝试解析包含该方法的类型时出错。

答案 1 :(得分:0)

看看这个:

Upgrading target framework from 4.0 to 4.5 for ASP.NET MVC applications

将ASP.NET MVC 4应用程序从.NET 4.0升级到.NET 4.5框架并不容易。