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