web-dev-qa-db-fra.com

Comment encoder des périodes URL?

J'ai besoin d'URL encoder certaines périodes car je dois passer un chemin de document et c'est comme ça

http://example.com/test.aspx?document=test.docx

Donc test.docx me cause une erreur de caractère illégal. Je dois donc le changer en

.  -->  %2E

J'ai essayé d'utiliser Server.UrlEncode

  string b = Server.UrlEncode("http://example.com/test.aspx?document=test.docx");

mais je reçois

"http%3a%2f%2fexample.com%2ftest.aspx%3fdocument%3dtest.docx"

Dois-je donc utiliser comme une chaîne de remplacement et le faire manuellement et remplacer toutes les périodes par ce code?

28
chobo2

La période où il n'y a pas de problème (étant donné que% 2E ne résout pas le problème). Un point est un caractère URL parfaitement valide quel que soit le problème, ce n'est pas le point. Vérifiez la trace de pile de l'erreur lancée ou publiez les détails complets de l'erreur.

Et vous ne devriez pas être l'URL encodant le chemin entier. Seul le paramètre de chaîne de requête valeur.

string b = "http://example.com/test.aspx?document=" + Server.UrlEncode("test.docx");

Recevez-vous toujours l'erreur si vous essayez de cette façon?

Je ne toucherais pas SharePoint avec un poteau de dix pieds. Cependant, échapper à la période n'empêcherait pas nécessairement SharePoint de faire ses manigances. Mais je suppose que vous devriez au moins l'essayer.

Server.UrlEncode("test.docx").Replace(".", "%2E");
18
John Leidegren

C'est une très vieille question, mais je suis tombé sur cette recherche d'un problème similaire. J'ai collé un "/" à la fin de mon URL avec des points et cela a contourné le problème.

28
Andrew Edvalson