2015-02-27 7 views
5

При обновлении до последних версий стека asp.net-5 я обнаружил следующую трассировку стека при попытке получить доступ к моему концентратору SignalR.Не удалось загрузить файл или сборку «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)

Я понимаю, что эта сборка была переименована Microsoft.AspNet.DataProtection и я вижу из САШ GitHub хранилищ, что это изменение, кажется, пронесся других проектов.

Я удалил все ссылки на старую сборку, выполнил поиск по ENTIRE содержимому каталога .k, моего каталога проектов, моего GAC, ВСЁ.

ответ

11

Конечно, после 4-х часов, пытаясь выяснить это, я обнаружил странную причину этого сразу после того, я отправляю вопрос:

Причины, обыскивая весь мой жесткий диск для любого возможного упоминания старого сборка ничего не вызвала, потому что ссылка на нее была ловко ENCRYPTED в XML-файле в моем каталоге% APPDATA%, созданном старой версией сборки!

При обновлении до новой версии с новым именем сборки вы ДОЛЖНЫ удалить содержимое каталога:% APPDATA% \ Local \ ASP.NET \ keys-BETA или вы получите эту ошибку! Xml-файл в этом каталоге содержит зашифрованное представление класса-класса класса decryptor, которое будет использовать старую сборку «Security.DataProtection» вместо новой.

+0

Правильно, просто удалите эту папку, и все будет в порядке. Еще одно исправление было сделано вскоре после этого изменения, чтобы удалить необходимость удаления папки. – Eilon

2

Как и в случае с Avi Cherry, я обнаружил, что эта проблема переместилась с .NET Core (DNX) RC1 на (DotNet) RC2.

Адрес должен быть удалены %localappdata%\ASP.NET\DataProtection-Keys.

xml внутри ссылки Microsoft.AspNet.Security.DataProtection, который должен был быть Microsoft.AspNetCore.... Вместо того, чтобы пытаться изменить его, я просто удалил каталог.

1

Я не могу комментировать другие ответы, поэтому мне нужно добавить свои собственные. Как уже было сказано, вам необходимо удалить СОДЕРЖАНИЕ каталога % localappdata% \ ASP.NET \ DataProtection-Keys .

Но НЕ удаляйте всю папку. Это может вызвать проблемы для приложений dotnetcore позже. Visual Studio может сказать, что «отладка начинается» и просто зависает.

Смежные вопросы