Используйте System.Web.HttpUtility.UrlEncode
(на основе этот ответ ):
value = HttpUtility.UrlEncode(value)
.Replace("!", "%21")
.Replace("(", "%28")
.Replace(")", "%29")
.Replace("*", "%2A")
.Replace("%7E", "~"); // undo escape