Пытаясь написать простейшее приложение из нескольких элементов поймал семью тараканов и пару малозаметных плодовых мушек. Ниже только начало списка, остальные добавятся когда (если) будет свободное время.
Когда будут вводиться элементы кодирования строк в URI, есть идея НЕ использовать HttpUtility.UrlEncode, HttpUtility.UrlPathEncode и прочие Server.UrlEncode. Как это не редко бывает, у M$ некорректная реализация, нарушающая все RFC. То пробелы плюсами заменяют, то неправильно перекодируют или вообще не перекодируют знаки пунктуации, например, могут оставить в строке пробел или пару слипшихся процентов. В соответствии с RFC следует брать текст в UTF-8, фильтровать символы выражением [^a-zA-Z0-9\\.\\-_~], если код символа имеет старшую часть (больше 255), то вместо него конструируем строку из двух шестнадцатиричных представлений байт кода символа.