5
HttpContext.Current.Items["ctx_" + HttpContext.Current.GetHashCode().ToString("x")]

我看到这个确切的代码............地方我必须忽略一些东西。在回复这些帖子时,通常会质疑使用 HttpContext 的适当性,但没有人指出 GetHashCode 是多余的,固定字符串就可以了。

我在这里俯瞰什么?


编辑:问题是,GetHashCode() 对于每个 HttpContext.Current 都是相同的,那么为什么在我提供的四个链接中使用 GetHashCode()?其中一些是投入了大量工作的帖子,所以我觉得他们可能正在解决我忽略的一些线程或上下文问题。我不明白为什么只是 HttpContext.Current.Items["ctx_"] 不会完全一样。

4

2 回答 2

1

这太可怕了。一方面,无论如何HttpContext.Current.Items都是当前的本地,HttpContext因此需要尝试使键“更独特”。其次,根据这种技术的使用方式,键有时会发生碰撞,从而导致虚假的、无法调试的故障。

如果您需要一个唯一的密钥(可能是因为您正在开发一个库),请使用更明智的解决方案,例如Guid.NewGuid().ToString(). 这保证工作,甚至更简单。

于 2013-04-18T11:05:56.750 回答
1

所以回答你的问题:)

使用 GetHashcode 创建密钥没有多大意义。您提供链接的帖子的作者可能想要创建唯一的密钥。但是这样做并不能阻止其他团队成员在代码库的其他地方使用相同的密钥。

我认为最好只使用手写的长键。代替

["ctx_" + HttpContext.Current.GetHashCode().ToString("x")]

只需使用

["object_context_key"]

或类似的东西。这样你就知道它到底是什么(这可能在例如事后调试中很有用)而且我还认为如果你必须想出一些长键,它可能会“更独特”然后那个使用 GetHashCode。

于 2013-04-18T10:49:58.840 回答