web-dev-qa-db-ja.com

ファイルまたはアセンブリ「System.Web.Razor」またはその依存関係の1つをロードできませんでした

Webサイト(Webアプリケーション)でUmbraco 4.11.6を使用しました。Webサイトはlocalhost(Visual Studio 2012およびIIS(v7)でテスト済み)で動作していますが、インターネットスペースから実行するとエラーが発生しました。エラーは:

ファイルまたはアセンブリ 'System.Web.Razor'またはその依存関係の1つを読み込めませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)

アセンブリロードトレース:次の情報は、アセンブリ 'System.Web.Razor'をロードできなかった理由を判断するのに役立ちます。

WRN:アセンブリバインディングログはオフになります。アセンブリバインドエラーログを有効にするには、レジストリ値[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)を1に設定します。注:アセンブリバインドエラーログに関連するパフォーマンスの低下があります。この機能をオフにするには、レジストリ値[HKLM\Software\Microsoft\Fusion!EnableLog]を削除します。

スタックトレース:

[FileLoadException:ファイルまたはアセンブリ 'System.Web.Razor'またはその依存関係の1つを読み込めませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)]

[FileLoadException:ファイルまたはアセンブリ 'System.Web.Razor、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark&stackMark、IntPtr pPrivHostBinder、Boolean throwOnFileNotFound、Boolean suppressInSecurityChecks、Boolean suppress
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef、Evidence assemblySecurity、RuntimeAssembly reqAssembly、StackCrawlMark&stackMark、IntPtr pPrivHostBinder、Boolean throwOnFileNotFound、Boolean forIntrospection、Boolean suppressSecurityChecks)
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString、Evidence assemblySecurity、StackCrawlMark&stackMark、IntPtr pPrivHostBinder、Boolean forIntrospection)+242
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString、Evidence assemblySecurity、StackCrawlMark&stackMark、Boolean forIntrospection)+17 System.Reflection.Assembly.Load(String assemblyString)+35
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName、Boolean starDirective)+122

[ConfigurationErrorsException:ファイルまたはアセンブリ 'System.Web.Razor、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName、Boolean starDirective)+12761078
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()+503 System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()+142 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)+334
System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath)+203
System.Web.Compilation.BuildManager.ExecutePreAppStart()+152
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager、IApplicationHost appHost、IConfigMapPathFactory configMapPathFactory、HostingEnvironmentParameters hostingParameters、PolicyLevel policyLevel、Exception appDomainCreationException)+1151

[HttpException(0x80004005):ファイルまたはアセンブリ 'System.Web.Razor、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+12881540 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr、HttpContext context)+12722601

バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.17929

webConfigの一部:

<runtime>
<!-- Old asp.net ajax Assembly bindings -->
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
</assemblyBinding>
23
Jahan

これを修正するいくつかの方法:

  1. WebサーバーにMVCをインストールします(常に可能とは限りません)。

  2. Visual Studioでは、ビルド時にローカルにコピーするようにdllを設定できます。次の記事を参照してください(MVC dllの名前はわずかに変更されていますが、プロセスを提供します) http://haacked.com/archive/2008/ 11/03/bin-deploy-aspnetmvc.aspx

  3. GACから適切なdllをumbracoサイトのbinフォルダーにコピーします。これを行うには、エクスプローラーで "%windir%\ Microsoft.NET\Assembly\GAC_MSIL"を開くと、GACにインストールされているすべてのdllが見つかり、適切なバージョンをプロジェクトにコピーできます。これは上記の方法に似ていますが、プロジェクトのビルドをバイパスします。

ファイルに関しては、おそらくSystem.Web.Razor.dllだけでなくそれ以上のものが必要になりますが、これはすべての欠落ファイルに対して機能します。

18
gavstorey

パッケージを再インストールします Microsoft.AspNet.Razor 、ADreNaLiNe-DJなど 投稿済み これを行う最良の方法は、Update-Packageコマンド、なぜならInstall-Packageコマンドには、再インストールを強制するオプションがありません。 docs を参照してください。

PM> Update-Package Microsoft.AspNet.Razor -reinstall
9
Yasel

これらのソリューション以外は私を助けました:Nugetを使用せずにdllを直接含めないことを好むため、サーバーに何もインストールできないためです。

私が使用した解決策は、という名前のnugetパッケージをインストール/再インストールすることです Microsoft.AspNet.Razor(Microsoft ASP.Net Razor 2.0.20710)

4
ADreNaLiNe-DJ
  1. Nugetクリア「Temp」フォルダーを削除します。
  2. プロジェクトソースからNugetパッケージを削除し、パッケージマネージャーを使用してNugetパッケージを再インストールします。
  3. Binフォルダーを削除します。
  4. プロジェクトのクリーンとプロジェクトのビルド。
  5. プロジェクトを実行します。

完了

3
Suraj Patel

Visual Studioと開発環境をインストールしたくなかったため、AspNetMVC4Setup.exeをWindows Server 2016マシンにインストールし、問題を解決しました。インストーラーは、Microsoft Webサイトからダウンロードされました。

Properties of AspNetMVC4Setup.exe file

2
Shantu