在升级到asp.net-5堆栈的最新版本时,我在试图访问SignalR集线器时遇到了以下堆栈跟踪。
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,我从aspnet存储库中看到,这一变化似乎已经波及到其他项目。
我删除了对旧程序集的所有引用,搜索了.k目录、我的项目目录、我的GAC、所有内容的全部内容。
发布于 2015-02-27 02:22:51
当然,经过4个小时的努力,我发现了奇怪的原因,就在我发布了这个问题:
为什么在我的整个硬盘驱动器中搜索任何可能提到的旧程序集,原因都是因为对它的引用被巧妙地加密到了由旧版本的程序集创建的XML文件中!
当使用新程序集名称升级到新版本时,必须删除目录的内容:%APPDATA%\Local\ASP.NET\keys BETA,否则将导致此错误!该目录中的xml文件包含解密器的程序集限定类名的加密表示,它将使用旧的"Security.DataProtection“程序集而不是新的程序集。
发布于 2016-05-25 20:55:17
类似于Avi,我发现我在从.NET Core (DNX) RC1迁移到(DotNet) RC2时遇到了问题。
我需要删除的目录是%localappdata%\ASP.NET\DataProtection-Keys。
所引用的Microsoft.AspNet.Security.DataProtection中的xml应该是Microsoft.AspNetCore...。而不是试图改变它,我只是删除了目录。
发布于 2016-06-10 21:25:04
我不能评论其他的答案,所以需要添加我自己的答案。正如其他人所说,您需要删除%localappdata%\ASP.NET\DataProtection目录的内容。
但是不要删除整个文件夹。这可能会给以后的dotnetcore应用程序带来问题。Visual可能会说“调试正在开始”并挂起。
https://stackoverflow.com/questions/28756390
复制相似问题