web-dev-qa-db-ja.com

ファイルまたはアセンブリをロードできませんでした 'System.Web.Mvc、Version = 3.0.0.0、Elmah.MVCの問題

ローカル-私のMVC 4、asp.net、c#アプリは、IIS 8/Windows 8。

Windows Server 2008に展開すると、次のエラーが表示されます。

Could not load file or Assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)

そして

[FileLoadException: Could not load file or Assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]
   Elmah.Mvc.Bootstrap.Initialize() +0

[InvalidOperationException: The pre-application start initialization method Initialize on type Elmah.Mvc.Bootstrap threw an exception with the following error message: Could not load file or Assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040).]
   System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +12881963
   System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +12881672
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath) +240
   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): The pre-application start initialization method Initialize on type Elmah.Mvc.Bootstrap threw an exception with the following error message: Could not load file or Assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040).]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12881108
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12722297

これは、プロジェクトプロパティ/パッケージ/公開Webの[展開するアイテム]ドロップダウンから[このアプリケーションの実行に必要なファイルのみ]を選択した場合に発生します。

「このプロジェクトのすべてのファイル」を選択すると、正常に機能します。

Elmahは古いバージョンのMVCなどに依存していると思います-すべてのファイルをアップロードせずにこれを修正するにはどうすればよいですか?

このような状況を問題解決する最良の方法は何ですか?

ありがとう。

33
niico

.Net 4.5用に構築されたNinjectでMVC4を使用すると、これとまったく同じ問題が発生しました。

これを修正するには、Web.configファイルにバインディングリダイレクトを追加する必要がありました(ファイルの最後、</configuration>タグ)

  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
      </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
  </dependentAssembly>
    </assemblyBinding>
  </runtime>

これにより、WebサーバーでSystem.Web.Mvc 4.0.0.0古いバージョンの代わりに。

62
Declan
<dependentAssembly>
            ***<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-5.2.7.0"*** newVersion="5.2.7.0" />
        </dependentAssembly>

正しいバージョンがあるか確認してください

0
Buminda

問題の修正に使用する手順がいくつかあり、web.configのバインディングリダイレクトで問題が解決しない場合は、次の手順を試して修正できます。

1) Visual Studioソリューションエクスプローラーツリーで、Webプロジェクトの下の[参照設定]を右クリックし、[NuGetパッケージの管理]を選択します。

2) [参照]タブに移動し、パッケージソースとして[nuget.org]を選択します。

次のパッケージを検索してインストールします:NinjectNinject.Web.Common、およびNinject.MVC5

また、[NuGetパッケージの管理]の[更新]タブで、特にMicrosoft ASP.NET MVCパッケージを更新することをお勧めします。

お役に立てれば...

0
Murat Yıldız