2010-09-10 3 views
0

Je veux utiliser le format suivant de mon url:Inclure l'URL à l'intérieur url

http://localhost/{url}/{options}/{hash} 

Mais depuis l'url sera très étrange avec une url dans une url, comment pourrais-je encoder cela?

Je pensais à l'encoder en hexadécimal, car l'encodage de l'url dans .net m'a donné un résultat étrange qui ne fonctionnait pas dans une URL. Mais je ne sais pas vraiment ce qui serait le meilleur moyen ici.

Je souhaite conserver la structure de l'URL, sans inclure de chaîne de requête.

Répondre

2

Vous pouvez utiliser la méthode System.Web.HttpUtility.UrlEncode pour coder des parties de l'URL (même une autre URL).

Si c'est une partie du chemin et non de la chaîne de requête, UrlPathEncode devrait faire le travail.

+0

qui ne semble fonctionner que si vous l'utilisez avec une chaîne de requête. pas avec une partie d'url. – Andreas

+0

vous avez raison, corrigé;) –

+0

Je vais essayer tout de suite, merci. Marquera votre réponse comme résolue si cela fonctionne :) – Andreas

0

Si vous ne voulez pas la partie querystring, alors pourquoi voulez-vous encoder la partie url?

L'adresse suivante est tout à fait valable:

http://localhost/www.stackoverflow.com/1234/abc 

Comme indiqué dans ce RFC, des personnages, "-" et "" sont autorisés dans une URI.

+0

Si l'URL (à l'intérieur de l'URL) contient une chaîne de requête, cela ne fonctionnera pas. – Andreas

+0

Vous avez mentionné que vous ne voulez pas inclure querystring. Si vous souhaitez inclure des données de chaîne de requête dans le chemin, vous pouvez développer vous-même un schéma d'encodage en remplaçant "&" par "-.-" ou "=" par "..-". Bien que ce ne soit pas une solution idéale, cela peut fonctionner. Lire à nouveau la RFC mentionnée dans ma réponse vous donnera une idée de la façon de développer un schéma pour votre établissement. – Zafer