Il est intéressant de noter que, bien que le Système.Web.VirtualPathUtility.ToAbsolute est très utile ici, c'est pas un remplacement parfait pour le Contrôle.ResolveUrl.
Il y a au moins une différence importante: le Contrôle.ResolveUrl gère les Chaînes de Requête très bien, mais ils causent VirtualPathUtility de jeter un HttpException. Cela peut être absolument déconcertant la première fois que cela arrive, surtout si vous êtes habitué à la façon dont le Contrôle.ResolveUrl œuvres.
Si vous connaissez la structure exacte de la Chaîne de Requête que vous souhaitez utiliser, c'est assez facile à contourner, à savoir:
public static string GetUrl(int id)
{
string path = VirtualPathUtility.ToAbsolute("~/SomePage.aspx");
return string.Format("{0}?id={1}", path, id);
}
...mais si la Chaîne de Requête est passé à partir d'une source inconnue, alors vous allez avoir besoin de l'analyser en quelque sorte. (Avant d'entrer trop profondément dans les que les, note ce Système.Uri peut être en mesure de le faire pour vous).