GetHashCode方法在asp.net core中为同一字符串返回不同的值

Gur*_*ley 3 .net c# frameworks .net-core asp.net-core

我在应用程序中编写了以下代码。

  var salt = "0115ee62e6e5e8ea68db9e2d7e72cec85e810ad9566212ffc2c4b76a17ca0b00";
  var hashCode = StringComparer.OrdinalIgnoreCase.GetHashCode(salt ?? string.Empty);
Run Code Online (Sandbox Code Playgroud)

它在“asp.net core”和“标准”框架中具有不同的行为。

框架 4.7: 如果我在 .net 标准框架中创建的网站/控制台应用程序中使用此代码,它总是会给我相同的结果。hashcode 变量的值始终为“1066337973”。

Asp.net Core: 如果我将在 asp.net core 网站中使用此代码,那么每次我停止应用程序并再次启动时,hashcode 变量都有不同的值。

由于这个问题,我的逻辑在 ASP.NET Core 应用程序中失败了。
这个问题如何解决?

Gur*_*ley 6

根据@Pavel Anikhouski

GetHashCode.NET Core 中的实现已更改,这是预期的行为,请查看这篇文章 为什么每次我在 .NET Core 中运行程序时 string.GetHashCode() 都不同?

String.GetHashCode对于单个 .NET 版本,相同字符串的哈希代码在不同 .NET 实现、不同 .NET 版本以及不同 .NET 平台(例如 32 位和 64 位)之间可能有所不同。在某些情况下,它们甚至可能因应用程序领域而异。这意味着同一程序的两次后续运行可能会返回不同的哈希码。