2015-02-27 6 views
5

Beim Aktualisieren auf die neuesten Versionen des asp.net-5-Stacks bin ich beim Versuch, auf meinen SignalR-Hub zuzugreifen, auf den folgenden Stack-Trace gestoßen.Konnte Datei oder Assembly nicht laden 'Microsoft.AspNet.Security.DataProtection'

FileNotFoundException: Could not load file or assembly 'Microsoft.AspNet.Security.DataProtection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) System.Type.GetType(String typeName, Boolean throwOnError) Microsoft.AspNet.DataProtection.KeyManagement.XmlKeyManager.ParseKeyElement(XElement keyElement) Microsoft.AspNet.DataProtection.KeyManagement.XmlKeyManager.GetAllKeys() Microsoft.AspNet.DataProtection.KeyManagement.KeyRingProvider.CreateCachedKeyRingInstanceUnderLock(DateTime utcNow, CachedKeyRing existingCachedKeyRing) Microsoft.AspNet.DataProtection.KeyManagement.KeyRingProvider.GetCurrentKeyRing() Microsoft.AspNet.DataProtection.KeyManagement.KeyRingBasedDataProtector.Protect(Byte[] unprotectedData) Microsoft.AspNet.SignalR.Infrastructure.DataProtectionProviderProtectedData.Protect(String data, String purpose)

Ich verstehe, dass diese Versammlung Microsoft.AspNet.DataProtection umbenannt wurde, und ich sehe von dem aspnet GitHub Repositories, die diese Änderung durch die anderen Projekte wellige zu haben scheint.

Ich habe alle Verweise auf die alte Assembly gelöscht, den GESAMTEN Inhalt des .k-Verzeichnisses, meines Projektverzeichnisses, meines GAC, ALLES durchsucht.

Antwort

11

Natürlich nach 4 Stunden versucht, dies herauszufinden, entdecke ich die bizarre Ursache es richtig, nachdem ich die Frage schreiben:

Der Grund, warum meine gesamte Festplatte für jede mögliche Erwähnung der alten Scheuer Assembly aufgedeckt ist nichts, weil der Verweis darauf geschickt in eine XML-Datei in meinem% APPDATA% -Verzeichnis VERSCHLÜSSELT wurde, das von der alten Version der Assembly erstellt wurde!

Wenn Sie auf die neue Version mit dem neuen Assemblynamen aktualisieren, MÜSSEN Sie den Inhalt des Verzeichnisses% APPDATA% \ Local \ ASP.NET \ keys-BETA löschen oder Sie werden mit diesem Fehler enden! Die XML-Datei in diesem Verzeichnis enthält eine verschlüsselte Darstellung des montagequalifizierten Klassennamens des Entschlüsslers, der die alte Assembly "Security.DataProtection" anstelle des neuen verwendet.

+0

Korrigieren Sie, löschen Sie einfach diesen Ordner und alles wird gut. Ein weiterer Fix wurde kurz nach dieser Änderung vorgenommen, um den Ordner zu löschen. – Eilon

2

Ähnlich Avi Cherry, fand ich dieses Problem von .NET Core (DNX) RC1 zu (DotNet) RC2. Das Verzeichnis, das ich löschen musste, war %localappdata%\ASP.NET\DataProtection-Keys.

Die xml innen verwiesen Microsoft.AspNet.Security.DataProtection, die Microsoft.AspNetCore... hätte sein sollen. Anstatt zu versuchen, es zu ändern, habe ich nur das Verzeichnis entfernt.

1

Ich kann die anderen Antworten nicht kommentieren, also müssen meine eigenen hinzufügen. Wie andere bereits sagten, müssen Sie den Inhalt des Verzeichnisses % localappdata% \ ASP.NET \ DataProtection-Keys löschen.

Löschen Sie NICHT den gesamten Ordner. Dies kann später Probleme für dotnetcore-Apps verursachen. Visual Studio kann sagen, dass "Debuggen gestartet wird" und einfach hängen.

Verwandte Themen