ASP.NET-查询字符串值的请求(“key”)是否比Request.QueryString(“key”)慢?

ASP.NET-查询字符串值的请求(“key”)是否比Request.QueryString(“key”)慢?,asp.net,Asp.net,使用Request.Querystring(“key”)超过Request(“key”)访问Querystring值是否有正当的性能原因 Request.Item(“key”)(我认为这相当于Request(“key”))从以下数据源提取: 质询 形式 饼干 服务器变量 这对我来说意味着Request.QueryString(“key”)将有更好的性能,但我看到有足够多的人在使用Request(“key”),这让我开始怀疑。显然,Request(“key”)会混淆数据源,但如果我的问题是性能

使用
Request.Querystring(“key”)
超过
Request(“key”)
访问Querystring值是否有正当的性能原因

Request.Item(“key”)
(我认为这相当于
Request(“key”)
)从以下数据源提取:

  • 质询
  • 形式
  • 饼干
  • 服务器变量
这对我来说意味着Request.QueryString(“key”)将有更好的性能,但我看到有足够多的人在使用Request(“key”),这让我开始怀疑。显然,
Request(“key”)
会混淆数据源,但如果我的问题是性能,那么上下文会混淆

  • 相关的:

我想,正如您所说,直接访问.QueryString而不是检查所有可能存储的数据,会有一点性能优势。虽然多少可能取决于搜索顺序以及是否返回第一个匹配项,或者检查是否继续而不考虑匹配项


如果只检查一个位置的值,而不允许接受用户的任何内容,可能会更安全(稍微安全一些)。

我能提供的最佳建议是对其进行基准测试

但从常识的角度来看,我希望Request.QueryString(“key”)更快


考虑现实世界中的另一种选择。如果你想找到一个单词,有人递给你两本字典,说“它可能在这本字典里,也可能在这本字典里”,这会比他们给他们一本字典并说“是的,肯定在这本字典里。看看这里”快吗?

如果性能有差异,肯定会非常非常,小的但是,使用Request可能存在安全漏洞,因为您可能从意外的来源获取数据,这是我避免使用Request的唯一原因。

我猜如果他们允许使用Request,那么性能的影响将是最小的,而且可能不必担心。您可能会看到的最大问题是,同一个密钥是否存在于多个区域中。我不知道它会立即签入哪个订单,MSDN似乎也没有说。如果有性能差异,它肯定会非常非常小。但是,使用
Request
可能存在安全漏洞,因为您可能从意外来源获取数据,这是我避免使用它的唯一原因。不确定性能,但从安全角度来看,指定密钥的来源(QueryString、Form等)是有意义的,否则,用户可能会以您不期望的方式传递变量,例如,在查询中指定一个值,您认为该值只会出现在cookie中。@Widor:grated,您应该假设来自用户的任何数据都不受信任,并且应该进行验证,无论其来源是什么。每个用户指定的源都会被欺骗。如果没有回答特定问题的答案,我会将其标记为已接受,因为这表明确实有一个有效的安全原因(意外源)不使用此功能