26

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 forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +210
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString&Evidence assemblyMarkSecurity, StackCrawl , 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、例外 appDomainCreationException) +1151

[HttpException (0x80004005): ファイルまたはアセンブリ 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext コンテキスト) +12881540 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext コンテキスト) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr、HttpContext コンテキスト) +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>

4

6 に答える 6

18

これを修正する方法はいくつかあります。

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

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

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

ファイルに関しては、System.Web.Razor.dll 以外にも必要になる可能性がありますが、これは不足しているすべてのファイルに対して機能します。

于 2013-04-08T20:06:44.940 に答える
5

これらのソリューションはどれも役に立ちませんでした。Nugetを使用せずにdllを直接含めたくないため、サーバーに何もインストールできないためです。

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

于 2016-06-09T06:33:55.833 に答える
4
  1. Nuget の「Temp」フォルダーを削除します。
  2. プロジェクト ソースから Nuget パッケージを削除し、パッケージ マネージャーを使用して Nuget パッケージを再インストールします。
  3. bin フォルダーを削除します。
  4. プロジェクトをクリーンアップしてプロジェクトをビルドします。
  5. プロジェクトを実行します。

終わり

于 2015-02-13T11:07:59.243 に答える