c# asp.net request.querystring

c# - Solicitar["key"] vs Request.Params["key"] versus Request.QueryString



asp.net (5)

Request["key"] vs Request.Params["key"] versus Request.QueryString["key"]

¿Qué método usan los programadores veteranos? ¿y por qué?


Como nota amable, si establece requestValidationMode = "4.5" en web.config, tanto Request.QueryString ["key"] como Request ["key"] utilizarán el comportamiento de "carga diferida" como diseño.

Sin embargo, de alguna manera, Request.Params ["key"] aún activará la validación como el comportamiento de 4.0.

Este extraño comportamiento realmente me confunde por un largo tiempo.


Prefiero usar Request.QueryString["key"] porque ayuda al lector de códigos a saber exactamente de dónde se obtienen los datos. Tiendo a no utilizar Request.Params["key"] porque podría referirse a una cookie, cadena de consulta y algunas otras cosas; entonces el usuario tiene que pensar un poco. Cuanto menos tiempo necesite alguien para descubrir lo que está pensando, más fácil será mantener el código.


Recomiendo Request.QueryString["key"] . No hay mucha diferencia en Request["Key"] para una cadena de consulta, pero hay una gran (e) diferencia si está tratando de obtener el valor de ServerVariables . Request["Key"] busca un valor en QueryString si es nulo, busca Form , luego Cookie y finalmente ServerVariables .

Usar Params es el más costoso. La primera solicitud a params crea una nueva NameValueCollection y agrega cada una de las QueryString , Form , Cookie y ServerVariables a esta colección. Para la segunda solicitud es más eficiente que Request["Key"] .

Habiendo dicho eso, la diferencia de rendimiento para un par de llaves es bastante insignificante. La clave aquí es que el código debe mostrar el intento y usar Request.QueryString aclara cuál es tu intención.


Siempre especifico explícitamente la colección. Si por alguna razón desea permitir modificaciones, codifique el "obtener" para cada una y escriba un código claro que muestre su jerarquía para elegir una sobre la otra. OMI, no me gusta obtener un valor de múltiples fuentes sin una razón comercial clara para hacerlo.


HttpRequest.Params o Request.Params obtiene casi todo (querystring, formulario, cookie y variables de sesión) desde el httprequest, mientras que Request.Querystring solo obtiene la querystring ... todo depende de lo que esté haciendo en ese momento.