From ec649f40c6fefd88180c9051d03f1a0c8466bf1a Mon Sep 17 00:00:00 2001 From: atsushi Date: Tue, 25 May 2010 05:43:00 +0000 Subject: [PATCH] 2010-05-25 Atsushi Enomoto * UriTemplate.cs : safe-unescape template parameters. Got bug #573795 site working. git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mcs@157823 e3ebcda4-bce8-0310-ba0a-eca2169e7518 --- class/System.ServiceModel.Web/System/ChangeLog | 5 +++++ class/System.ServiceModel.Web/System/UriTemplate.cs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/class/System.ServiceModel.Web/System/ChangeLog b/class/System.ServiceModel.Web/System/ChangeLog index 03e07145b4..e54b97279e 100644 --- a/class/System.ServiceModel.Web/System/ChangeLog +++ b/class/System.ServiceModel.Web/System/ChangeLog @@ -1,3 +1,8 @@ +2010-05-25 Atsushi Enomoto + + * UriTemplate.cs : safe-unescape template parameters. + Got bug #573795 site working. + 2009-10-23 Atsushi Enomoto * UriTemplate.cs, UriTemplateMatchException.cs, UriTemplateMatch.cs: diff --git a/class/System.ServiceModel.Web/System/UriTemplate.cs b/class/System.ServiceModel.Web/System/UriTemplate.cs index 50112ee223..7ea8192cd9 100644 --- a/class/System.ServiceModel.Web/System/UriTemplate.cs +++ b/class/System.ServiceModel.Web/System/UriTemplate.cs @@ -231,7 +231,7 @@ namespace System m.RequestUri = candidate; var vc = m.BoundVariables; - string cp = baseAddress.MakeRelativeUri(candidate).ToString (); + string cp = Uri.UnescapeDataString (baseAddress.MakeRelativeUri (candidate).ToString ()); if (IgnoreTrailingSlash && cp [cp.Length - 1] == '/') cp = cp.Substring (0, cp.Length - 1); @@ -278,7 +278,7 @@ namespace System return m; - string [] parameters = candidate.Query.Substring (1).Split ('&'); // chop first '?' + string [] parameters = Uri.UnescapeDataString (candidate.Query.Substring (1)).Split ('&'); // chop first '?' foreach (string parameter in parameters) { string [] pair = parameter.Split ('='); m.QueryParameters.Add (pair [0], pair [1]); -- 2.11.4.GIT