我正在努力解决框架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:无法加载类型' 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)。] 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(IEnumerable1 source, Func
2谓词)+215 System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath,HttpContextBase httpContext,Func2 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(Func2 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时,问题就会消失。
我们尝试过的事情:
答案 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框架并不容易。