Quelle est la différence entre Request.Url.Query et Request.QueryString?

J'ai été à la poursuite d'un bug sur la Réécriture d'Url de l'application. Le bug a montré que l'encodage d'un problème sur certains caractères diacritiques dans la chaîne de requête.

Fondamentalement, le problème a été qu'une demande a été fondamentalement /recherche.aspx?search=heřmánek a se réécrit avec une chaîne de requête de recherche "=il%c5%99%c3%a1nek"

La valeur correcte (à l'aide de certains différents, code de travail) est une réécriture de l'ensemble de la chaîne de recherche "search=il%u0159m%u00e1nek"

Noter la différence entre les deux chaînes. Toutefois, si vous postez un message à la fois, vous verrez que le Codage d'Url reproduit la même chaîne. Il n'est pas jusqu'à ce que vous utilisez le contexte.La fonction de réécriture que le codage des pauses. La chaîne brisée renvoie 'heÅmánek' (à l'aide de la Demande.QueryString["Recherche"] et le travail de la chaîne de retour heřmánek'. Ce changement se produit après l'appel à la fonction de réécriture.

J'ai tracé cette baisse à un ensemble de code à l'aide de la Demande.QueryString (de travail) et l'autre à l'aide de la Demande.Url.Requête (requête.Url renvoie une instance d'Uri).

Alors que j'ai travaillé le bug il y a un trou dans ma compréhension, donc si quelqu'un sait la différence, je suis prêt pour la leçon.

source d'informationauteur Bruce Chapman