Ich habe mehr als eine ASP.NET 2.0-Website auf IIS 6 und Windows Server 2003. Jede Website verweist auf einige DLLs: Design, Logik und so weiter. Jede Website ist auf einem anderen ApplicationPool mit Standardkonfiguration über Recycling-Techniken.
Jede DLL ist streng benannt (nicht verzögert) und hat eine Version, die sich nie ändert (2.0.0.0), alle DLLs werden im GAC abgelegt.
Nachdem ich eine DLL im GAC aktualisieren (dh. MyLibrary.dll), die in etwas (Methode, Klassen ) für die Verwendung in Web-Site "A" geändert hat, und nach dem Recycling nur die "A" Anwendungspool, wenn ich versuche, auf Web-Site "B" zugreifen, die die gleiche DLL verweisen ich den gemeinsamen Fehler über diese DLL erhalten:
Das Manifest der gefundenen Baugruppe Definition der gefundenen Assembly stimmt nicht mit der Assembly Referenz. (Ausnahme von HRESULT: 0x80131040)
Natürlich ist nichts in der DLL als Code, gleichen starken Schlüssel, gleiche Version, Kultur geändert. Der Fehler verschwinden über Recycling "B" Anwendungspool, natürlich.
Was kann eine seltsame erzeugen, RANDOM (Ich muss schon sagen!), Verhalten? Es ist etwas mehr, wie Hashing, dass es verwendet wird, um Baugruppen zu vergleichen?
Nachtrag
- Perpetualcoder fragte mich, wie DLLs referenziert werden, wenn mit voll qualifizierten Namen, ich denke, es ist, hier eine Zeile der web.config:
assembly="MyNamespace.MyComponent, Version=2.0.0.0, Culture=neutral, PublicKeyToken=1234567890ASDFGH"