Webサイト(Webアプリケーション)でUmbraco 4.11.6を使用しました。Webサイトはlocalhost(Visual Studio 2012およびIIS(v7)でテスト済み)で動作していますが、インターネットスペースから実行するとエラーが発生しました。エラーは:
アセンブリロードトレース:次の情報は、アセンブリ '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>
これを修正するいくつかの方法:
WebサーバーにMVCをインストールします(常に可能とは限りません)。
Visual Studioでは、ビルド時にローカルにコピーするようにdllを設定できます。次の記事を参照してください(MVC dllの名前はわずかに変更されていますが、プロセスを提供します) http://haacked.com/archive/2008/ 11/03/bin-deploy-aspnetmvc.aspx
GACから適切なdllをumbracoサイトのbinフォルダーにコピーします。これを行うには、エクスプローラーで "%windir%\ Microsoft.NET\Assembly\GAC_MSIL"を開くと、GACにインストールされているすべてのdllが見つかり、適切なバージョンをプロジェクトにコピーできます。これは上記の方法に似ていますが、プロジェクトのビルドをバイパスします。
ファイルに関しては、おそらくSystem.Web.Razor.dllだけでなくそれ以上のものが必要になりますが、これはすべての欠落ファイルに対して機能します。
パッケージを再インストールします Microsoft.AspNet.Razor 、ADreNaLiNe-DJなど 投稿済み これを行う最良の方法は、Update-Package
コマンド、なぜならInstall-Package
コマンドには、再インストールを強制するオプションがありません。 docs を参照してください。
PM> Update-Package Microsoft.AspNet.Razor -reinstall
これらのソリューション以外は私を助けました:Nugetを使用せずにdllを直接含めないことを好むため、サーバーに何もインストールできないためです。
私が使用した解決策は、という名前のnugetパッケージをインストール/再インストールすることです Microsoft.AspNet.Razor(Microsoft ASP.Net Razor 2.0.20710)
完了