1

フレームワーク 4.5 の問題に苦しんでいます。私たちの asp.net mvc4 Web アプリは、.net 4.0 がインストールされた 2008R2 サーバーで正常に動作していますが、フレームワークを .net 4.5 にアップグレードすると、ある種の厄介なバグに遭遇したようです。

メソッド '...' に実装がない (RVA がない) ため、アセンブリ '...' から型 '...' を読み込めませんでした

この異常な例外は、.aspx ビューの asp.net によって生成された .cs コードからリフレクションを使用して型を取得するときに、フレームワークによってスローされます。YSOD を取得します。

「/」アプリケーションでサーバー エラーが発生しました。 メソッド '__RenderContent3' に実装がない (RVA がない) ため、アセンブリ 'App_Web_index.aspx.aeda16c.y-wvrppj、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' から型 'ASP.views_beherenecli_actielijstecli_index_aspx' を読み込めませんでした。 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.TypeLoadException: メソッド '__RenderContent3' が実装なし (RVA なし)。

ソース エラー: 現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタック トレース: [TypeLoadException: メソッド '_RenderContent3' には実装がありません (RVA はありません)。] System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly アセンブリ、文字列名、ブール型 throwOnError、ブール型 ignoreCase、ObjectHandleOnStack 型) +0 System.Reflection.RuntimeAssembly.GetType(文字列名、ブール型 throwOnError、 Boolean ignoreCase) +73 System.Web.Compilation.BaseTemplateBuildProvider.GetGeneratedType(CompilerResults 結果、Boolean useDelayLoadTypeIfEnabled) +128 System.Web.Compilation.BuildProvider.CreateBuildResult(CompilerResults 結果) +103 System.Web.Compilation.BuildProvider.GetBuildResult(CompilerResults 結果) ) +23 System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +599 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild,Boolean allowCrossApp、Boolean allowBuildInPrecompile、Boolean throwIfNotFound、Boolean 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, FuncBoolean 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 コンテキスト、ブール型の allowCrossApp、ブール型の throwIfNotFound) +249 System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath) +36 System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext、String virtualPath 、関数Boolean 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 コンテキスト、ブール型の allowCrossApp、ブール型の throwIfNotFound) +249 System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath) +36 System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext、String virtualPath 、関数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, FuncBoolean 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, FuncWebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext, String virtualPath, FuncWebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext, String virtualPath, Func2 virtualPathExists) +55 System.Linq.WhereSelectListIterator2.MoveNext() +245 System.Linq.Enumerable.FirstOrDefault(IEnumerable 1 source, Func2 predicate) +215 System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath, HttpContextBase httpContext, Func 2 virtualPathExists, IDisplayMode currentDisplayMode) +27 System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List1 の場所, String name, String controllerName, String areaName, String cacheKey, String[]&searchedLocations) +402 System.Web.Mvc.VirtualPathProviderViewEngine.GetPath(ControllerContext controllerContext, String[] locations, String[] areaLocations, String locationsPropertyName, String name, String controllerName, String cacheKeyPrefix, Boolean useCache, String []&searchedLocations) +942 System.Web.Mvc.VirtualPathProviderViewEngine.FindView(ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) +206 System.Web.Mvc.<>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, Func1 継続) +613 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 フィルター, ActionResult actionResult) +263 System .Web.Mvc.Async.<>c _DisplayClass25.b_ 22(IAsyncResult asyncResult) +240 System.Web.Mvc.<>c _DisplayClass1d.b_ 18(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.<>c _DisplayClass4.b_ 3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53 System.Web.Mvc.Async.<>c _DisplayClass4.b_ 3(IAsyncResult ar) +15 System.Web. Mvc.<>c_DisplayClass8.b_ 3(IAsyncResult asyncResult) +42 System.Web.Mvc.Async.<>c _DisplayClass4.b__3(IAsyncResult ar) +15 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 システム.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値 & 完了同期) +288

質問: この問題を抱えているのは私だけですか? 誰かがこれを回避する方法を知っているか、修正を知っていますか?

注: コードはフレームワーク 4.0 のビルドサーバーでコンパイルされています。4.0 にダウングレードすると問題がなくなるため、この問題は実際には .Net 4.5 に関連しているようです。

私たちが試したこと:

  • 一時 ASP.NET ファイル フォルダの削除
  • web.config では、コンパイル要素と targetFramework="4.5" 属性を使用します。
4

2 に答える 2

1

HTMLヘルパーメソッドでC#の「dynamic」キーワードを使用することが問題の原因のようです。メインのrenderメソッドはRVA値0を取得します。これにより、「メソッドに実装がありません(RVAなし)例外が発生します」。asp.netがメソッドを含む型を解決しようとするとエラーが発生します。

于 2013-01-17T13:20:33.373 に答える
0

これを見てください:

ASP.NET MVC アプリケーションのターゲット フレームワークを 4.0 から 4.5 にアップグレードする

ASP.NET MVC 4 アプリケーションを .NET 4.0 から .NET 4.5 フレームワークにアップグレードするのは簡単なことではありません。

于 2013-01-17T11:44:15.520 に答える