web-dev-qa-db-de.com

Datei oder Assembly 'System.Web.Mvc, Version = 3.0.0.0, Elmah.MVC-Problem konnte nicht geladen werden

Lokal - meine MVC 4, asp.net, c # -App läuft unter IIS 8/Windows 8 einwandfrei.

Bei der Bereitstellung unter Windows Server 2008 wird diese Fehlermeldung angezeigt:

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)

und

[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

Dies geschieht, wenn ich in der Dropdown-Liste "Zu implementierende Elemente" in den Projekteigenschaften/package/publish web "Nur Dateien zum Ausführen dieser Anwendung" auswähle.

Wenn ich 'Alle Dateien in diesem Projekt' auswähle, funktioniert es gut.

Ich denke, Elmah ist auf eine ältere Version von MVC oder etwas anderes angewiesen. Wie kann ich das beheben, ohne alle Dateien hochladen zu müssen?

Was ist der beste Weg, um Probleme wie diese zu lösen?

Vielen Dank.

29
niico

Ich hatte genau das gleiche Problem mit MVC4 mit Ninject für .Net 4.5

Um dies zu beheben, musste ich meiner Datei Web.config eine Bindungsumleitung hinzufügen: (Am Ende der Datei, kurz vor dem Tag </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>

Dies zwingt den Webserver, anstelle einer älteren Version System.Web.Mvc 4.0.0.0 zu verwenden. 

58
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>

Überprüfen Sie, ob die richtigen Versionen vorhanden sind

0
Buminda

Es gibt einige Verfahren, um das Problem zu beheben. Wenn die Bindungsumleitung in web.config das Problem nicht löst, können Sie die folgenden Schritte ausführen, um das Problem zu beheben:

1) Klicken Sie im Projektmappen-Explorer in Visual Studio mit der rechten Maustaste auf Verweise unter Ihrem Webprojekt, und wählen Sie NuGet-Pakete verwalten aus.

2) Gehen Sie zur Registerkarte "Durchsuchen" und wählen Sie nuget.org als Paketquelle.

3) Suchen und installieren Sie die folgenden Pakete: Ninject, Ninject.Web.Common und Ninject.MVC5.

Es ist auch besser, die Pakete zu aktualisieren, insbesondere Microsoft ASP.NET MVC auf der Registerkarte Updates in Manage NuGet Packages.

Hoffe das hilft...

0
Murat Yıldız