MVC3アプリケーションをIIS7ホスティング環境にデプロイしようとしましたが、次の例外が表示されます。
アセンブリ「Microsoft.Web.Infrastructure、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」からタイプ「Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility」をロードできませんでした。説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーの詳細およびコードのどこで発生したかについては、スタックトレースを確認してください。
例外の詳細:System.TypeLoadException:アセンブリ「Microsoft.Web.Infrastructure、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」からタイプ「Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility」をロードできませんでした。
助言がありますか?
Webサーバー自体にASP.Net WebページとMVC3をインストールしたため、アプリはビン展開されていません。
それの訳は Microsoft.Web.Infrastructure
はGACにありません。この参照をプロジェクトに追加する必要があります。参照を右クリックしてプロパティに移動し、ローカルにコピーをtrueに設定します。
出力(NinjectとNCUを無視):
リファレンスクリーニングを実行した後、Microsoft.Web.Infrastructure
を削除しましたが、packages.configファイルからは削除しませんでした。 Package Manager Console
を使用して再度追加しようとすると、Visual Studioは既にインストールされていると表示しますが、削除されたためfalseです。
次に、packages.config
ファイルのコード行を削除しました
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
そして、コマンドを再度実行しました
PM> Install-Package Microsoft.Web.Infrastructure
この後、今では正常に動作します。
Microsoft.Web.Infrastructure
はNugetパッケージになりました。プロジェクトに追加して、binディレクトリの展開を有効にできます-
サーバー上のルートweb.configファイル(次のような場所にあることを確認してください:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config
)には次のエントリがあります。
<configuration>
<location allowOverride="true">
<system.web>
<fullTrustAssemblies>
<add
assemblyName="Microsoft.Web.Infrastructure"
version="1.0.0.0"
publicKey="[bunch of letters and numbers]"
/>
見つからない場合は、誰かが.NET 4インストールを台無しにしていることを意味します。
microsoft.Web.Infrastructure.dllをダウンロードして、binフォルダーにコピーしてください!