1. ホーム
  2. asp.net

[解決済み] ASP.NET MVC 4 Betaインストール後、InvalidCastExceptionが発生する。

2023-08-05 22:32:50

質問

ASP.NET MVC 3 を使用しているマシンに ASP.NET MVC 4 Beta をインストールすると、次のような例外が発生します。

System.InvalidCastException はユーザー コードによって処理されませんでした。 Message=[A]System.Web.WebPages.Razor.Configuration.HostSection は、[B]System.Web.WebPages.HostSection にキャストできません。 を [B]System.Web.WebPages.Razor.Configuration.HostSection にキャストできません。A タイプの生成元は が 'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral.Razor' から発信されています。 PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location C:\WindowsMicrosoft.Netassembly paragraph paragraph_GAC_MSIL paragraph_System.Web.WebPages.Razorv4.0_1.0.0__31bf3856ad364e35 paragraphSystem.Web.WebPages.Razor.dll'. タイプ B は 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' から発信されています。 in the context 'Default' at location 'C:\WindowsMicrosoft.Netassembly﹑GAC_MSIL﹑System.Web.WebPages.Razor﹑v4.0_2.0.0__31bf3856ad364e35↩System.Web.WebPages.Razor.dll's. Source=System.Web.WebPages.Razor。

StackTraceです。

at System.Web.WebPages.Razor.WebRazorHostFactory.GetRazorSection(String virtualPath) at System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfig(String virtualPath, String physicalPath) at System.Web.WebPages.Razor.RazorBuildProvider.GetHostFromConfig() at System.Web.WebPages.Razor.RazorBuildProvider.CreateHost() at System.Web.WebPages.Razor.RazorBuildProvider.EnsureGeneratedCode() at System.Web.WebPages.Razor.RazorBuildProvider.get_CodeCompilerType() at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider) at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()にて。 at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()にて。 at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPathのvirtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) at System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath) at System.Web.Mvc.BuildManagerViewEngine.FileExists(ControllerContext controllerContext, String virtualPath) at System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List`1 locations, String name, String controllerName, String areaName, String cacheKey, String[]& searchedLocations) at System.Web.Mvc.VirtualPathProviderViewEngine.GetPath(ControllerContext controllerContext, String[] locations, String[] areaLocations, String locationsPropertyName, String name, String controllerName, String cacheKeyPrefix, Boolean useCache, String[]& searchedLocations) at System.Web.Mvc.VirtualPathProviderViewEngine.FindView(ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) at System.Web.Mvc.ViewEngineCollection.<>c__DisplayClassc.b__b(IViewEngine e) at System.Web.Mvc.ViewEngineCollection.Find(Func`2 lookup, Boolean trackSearchedPaths) at System.Web.Mvc.ViewEngineCollection.FindView(ControllerContext controllerContext, String viewName, String masterName) at System.Web.Mvc.ViewResult.FindView(ControllerContextコンテキスト) at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContextのコンテキスト) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.b__19() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.b__1b() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) at System.Web.Mvc.Controller.ExecuteCore()メソッド at [project_namespace].Controllers.GlobalizationController.ExecuteCore() in [file_path]. at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.b__5() at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.b__0() at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.b__7(IAsyncResult _) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.b__d() at System.Web.Mvc.SecurityUtil.b__0(アクションf) at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) at System.Web.Ht

これは完全に私をブロックし、私はベータ版を維持したいのですが、例外を取り除くために完全に削除する必要があるかもしれません。

どのように解決するのですか?

web.configに以下を追加してみてください。

<appSettings>
  <add key="webpages:Version" value="1.0.0.0"/>
</appSettings>

複数のビルドプロバイダが登録されており、最新のものが勝利していることが問題の原因である可能性があります。