断言在迁移到.NET Core 2.0后崩溃Kestrel失败

时间:2017-09-19 00:09:00

标签: c# asp.net .net-core asp.net-core-2.0 .net-core-2.0

我们最近移植了我们的代码库,使用.NET Core 2.0,远离.NET Framework 4.7 + ASP.NET Core 2.0。

我们现在在Kestrel中发生随机崩溃,如下所示:

Assert Failure
Expression: [Recursive resource lookup bug]
Application is shutting down...
Description: Infinite recursion during resource lookup within System.Private.CoreLib.  This may be a bug in System.Private.CoreLib, or potentially in certain extensibility points such as assembly resolve events or CultureInfo names.  Resource name: ArgumentNull_Generic
Stack Trace:
  at System.SR.InternalGetResourceString(String key)
  at System.SR.GetResourceString(String resourceKey, String defaultString)
  at System.ArgumentNullException..ctor(String paramName)
  at System.Runtime.Loader.AssemblyLoadContext.GetLoadContext(Assembly assembly)
  at System.Reflection.Assembly.LoadFromResolveHandler(Object sender, ResolveEventArgs args)
  at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
  at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks, IntPtr ptrLoadContextBinder)
  at System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(String name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark)
  at System.Resources.ManifestBasedResourceGroveler.GetSatelliteAssembly(CultureInfo lookForCulture, StackCrawlMark& stackMark)
  at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
  at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
  at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
  at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
  at System.SR.InternalGetResourceString(String key)
  at System.SR.GetResourceString(String resourceKey, String defaultString)
  at System.ArgumentNullException..ctor(String paramName)
  at System.Runtime.Loader.AssemblyLoadContext.GetLoadContext(Assembly assembly)
  at System.Reflection.Assembly.LoadFromResolveHandler(Object sender, ResolveEventArgs args)
  at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
  at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks, IntPtr ptrLoadContextBinder)
   at System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(String name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark)
   at System.Resources.ManifestBasedResourceGroveler.GetSatelliteAssembly(CultureInfo lookForCulture, StackCrawlMark& stackMark)
   at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
   at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
   at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
   at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
   at System.SR.InternalGetResourceString(String key)
   at System.SR.GetResourceString(String resourceKey, String defaultString)
   at System.Threading.Tasks.TaskCanceledException..ctor(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

显然这个问题已知并且已经修复(https://github.com/dotnet/coreclr/issues/12668),但尚未发布。

是否有其他人遇到此问题并找到了解决方法?它被触发了很多。我已经尝试了有关GitHub相关问题的建议,但没有一个可行(将new ArgumentException()添加到Main()的开头,或仅使用en-US文化)。

0 个答案:

没有答案