Warum bekomme ich System.IO.FileLoadException: Konnte nicht geladen, Datei oder assembly, etwa einmal in der Woche auf meiner ASP.Net Website?

Ich habe eine ziemlich einfache interne ASP.Net Website, die die Probleme laden des Microsoft.Praktiken.EnterpriseLibrary.Daten-dll, etwa einmal pro Woche. Hier ist die Exception-Meldung:

System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied.
File name: 'Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null'
   at foobar.Intranet.Logic.Data.UserDB.SelectByUserName(String userName)
   at foobar.Intranet.Logic.Info.User.ValidateUser(String userName) in F:\Development\foobar\foobar\foobar.Intranet.Logic\Info\User.cs:line 130
   at Login.ValidateUser(String username, String password) in e:\foobar\foobar.Intranet\Login.aspx.cs:line 32

=== Pre-bind state information ===
LOG: User = Unknown
LOG: DisplayName = Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///E:/foobar/foobar.Intranet/
LOG: Initial PrivatePath = E:\foobar\foobar.Intranet\bin Calling assembly : foobar.Intranet.Logic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: E:\foobar\foobar.Intranet\web.config
LOG: Using host configuration file: \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet.config
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/foobar.intranet/668896d8/82d7e51c/Microsoft.Practices.EnterpriseLibrary.Data.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/foobar.intranet/668896d8/82d7e51c/Microsoft.Practices.EnterpriseLibrary.Data/Microsoft.Practices.EnterpriseLibrary.Data.DLL.
LOG: Attempting download of new URL file:///E:/foobar/foobar.Intranet/bin/Microsoft.Practices.EnterpriseLibrary.Data.DLL.
ERR: Failed to complete setup of assembly (hr = 0x80070005). Probing terminated.

Dinge beachten:

  • Eine einfache IIS-Reset behebt das Problem.
  • Wir hatten den gleichen code ausführen auf einem einzigen webserver mit keine Probleme. Wir zogen dann die Website, um zwei neue, Lastenausgleich (mit sticky sessions) Webserver (alle drei Windows Server 2003 R2 Standard Edition SP1). Nun, jeder der Lastenausgleich Webserver werfen dieser Ausnahme einmal die Woche einfach aus dem blauen heraus.
    • Der einzige große Unterschied, den ich denken kann, habe ich installiert, die 4.0 .NET framework auf dem load-balanced Server. Die website läuft noch unter ASP.NET 2.0 also ich sehe nicht, wie das wäre ein Problem
  • Ich so konfiguriert haben, dass der Indexdienst nicht nach den "Temporären ASP.NET Dateien" - Ordner, aber es hat nicht geholfen.
  • Wir verwenden die von Microsoft.Praktiken.EnterpriseLibrary.Daten, die dll überall auf unserer Website. Fast jede einzelne Seite mit unseren Logik-dll, die wiederum nutzt die EnterpriseLibrary dlls.
  • Während der Fehler wo passiert, sobald ich sah sogar, um zu sehen, welche Prozesse wurden sperren die dll in den "Temporären ASP.NET Dateien" - Ordner, und es war nicht anders als die Schlösser an den server, die gut funktioniert.
  • Sobald der Fehler beginnt, Fehler, jede einzelne Zeit, bis ein iisreset durchgeführt

Jede Einsicht jedermann anbieten könnte wäre sehr geschätzt werden. Lassen Sie mich wissen, wenn ich etwas verpasst.

Dank!

Ich gehe davon aus, dass, wenn Sie Begegnung diesem Thema, dann alle Anrufe an die Montage schlägt mit der oben genannten Fehlermeldung ab (bis ein iisreset durchgeführt wird).
Tuzo - Ihre Annahme ist richtig. Sobald das Problem beginnt, werden alle Aufrufe zum laden der assembly nicht (bis ein iisreset durchgeführt wird).
Eine interessante Sache, die ich entdeckte, ist, dass die IIS-Verzeichnis Sicherheit, Anonymer Zugriff Benutzer war nicht IUSR_MachineName, aber IUSR_OldMachineName. Ich habe seit aktualisiert die Benutzernamen, unter manager-Benutzer und-Gruppen, aber ich musste Sie manuell aktualisieren Sie das Anonyme IIS-Benutzerkonto. Würde jemand wissen, ob das betreffen würde?
Ich war immer den gleichen Fehler, wenn ich versuche zu laden .Net 2.0-assembly aus .Net 4.0-Anwendung.

InformationsquelleAutor Daryl | 2010-06-30

Schreibe einen Kommentar