C# “ASP.net例外情况”;FileNotFoundException“;当bin文件夹中存在程序集文件时处于空闲状态
该文件存在、名称正确且未损坏。如果我把它从“垃圾箱”中移出和返回,它会再次工作,大约5分钟,然后错误的吼声就会回来。任何刷新文件的操作都可以,重新发布、重命名或移动都可以让站点暂时恢复工作 {“消息”:“无法加载文件或程序集\u0027Ouranos, Version=1.0.0.0,Culture=fr CA,PublicKeyToken=null\u0027或其中一个 它的依赖性。Le fichier spécifiéest introvable.,“StackTrace”: 异步(字符串维X、字符串维Y、字符串 操作、字符串区域性、字符串利用率、字符串接口、字符串 来源,字符串Champ,字符串Valeur,字符串Classement,字符串 方向,strifilenotfound异常页,字符串 Itérations)”,“ExceptionType:“System.IO.”C# “ASP.net例外情况”;FileNotFoundException“;当bin文件夹中存在程序集文件时处于空闲状态,c#,asp.net,.net-assembly,filenotfoundexception,C#,Asp.net,.net Assembly,Filenotfoundexception,该文件存在、名称正确且未损坏。如果我把它从“垃圾箱”中移出和返回,它会再次工作,大约5分钟,然后错误的吼声就会回来。任何刷新文件的操作都可以,重新发布、重命名或移动都可以让站点暂时恢复工作 {“消息”:“无法加载文件或程序集\u0027Ouranos, Version=1.0.0.0,Culture=fr CA,PublicKeyToken=null\u0027或其中一个 它的依赖性。Le fichier spécifiéest introvable.,“StackTrace”: 异步(字符串维
Fusion确实给了我一个错误代码(0x80070002),它指示我获取过程监视器。这将引导我找到临时程序集文件夹。现在我可能错了。比较健康网站和病态网站的缓存文件,我发现了一些奇怪的东西
- 健康网站作为缓存中BIN的所有DLL
- 生病的网站在缓存中缺少两个DLL,它们位于BIN中
- PresentationCore.dll
- WindowsBase.dll
!(Assembleée是System.Reflection.Emit.AssemblyBuilder)和&(Assembleée.GetType().FullName!=“System.Reflection.Emit.InternalAssemblyBuilder”)
不存在,其代码在.net 4.0及以上版本中导致异常。虽然不雅致,但它很管用
public static void Chargeur()
{
var Assemblées_Chargées = (from Assembly Assemblée in AppDomain.CurrentDomain.GetAssemblies() where !(Assemblée is System.Reflection.Emit.AssemblyBuilder) && (Assemblée.GetType().FullName != "System.Reflection.Emit.InternalAssemblyBuilder") && (!Assemblée.GlobalAssemblyCache) && (Assemblée.CodeBase != Assembly.GetExecutingAssembly().CodeBase) select Assemblée).ToList();
var Chemins_Chargés = Assemblées_Chargées.Select(Assemblée => Assemblée.Location).ToArray();
var Chemins_Référencés = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll");
var Assemblées_NonChargées = Chemins_Référencés.Where(Références => !Chemins_Chargés.Contains(Références, StringComparer.InvariantCultureIgnoreCase)).ToList();
Assemblées_NonChargées.ForEach(path => Assemblées_Chargées.Add(AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(path))));
}
Fusion确实给了我一个错误代码(0x80070002),我将用新信息编辑我的主要帖子。只是随机的,根据这个:,两个程序集都有32位和64位版本,请尝试在IIS和/或您的应用程序上强制使用32位模式,看看是否有帮助。它已经是32位了,以前尝试过,但遗憾的是,这并不是问题所在。真正的问题是“PresentationCore.dll”和“WindowsBase.dll”,它们不缓存,因为它们是.net本地人,但在文件刷新后仅能工作约5分钟,然后就消失了