Вот что говорит MS о UrlEncode()
'Кодировка URL гарантирует, что все браузеры будут правильно передавать текст в строках URL. Такие символы, как знак вопроса (?), Знак амперсанда (&), знак косой черты (/) и пробелы, могут быть усечены или повреждены некоторыми браузерами. В результате эти символы должны быть закодированы в тегах или в строках запроса, где строки могут быть повторно отправлены браузером в строке запроса. '
Кроме того, вы должны кодировать только параметры запроса, иначе результат вызовет проблемы. Например, если у вас есть эта ссылка
http://www.contoso.com/articles.aspx?title=ASP.NET+Examples
И вы кодируете целое, вы получите
http%3a%2f%2fwww.contoso.com%2farticles.aspx%3ftitle%3dASP.NET%2bExamples
Подробнее см. http://msdn.microsoft.com/en-us/library/zttxte6w.aspx
Я использую маршрутизацию ASP.net, которая поставляется с версией 4.0. Вот пример кода http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx. Вы можете довольно легко манипулировать своими ссылками.
ОБНОВЛЕНИЕ: Microsoft внесла некоторые изменения в IIS7, которые могут вызвать проблемы с маршрутизацией. Поэтому попробуйте изменить параметр «Режим управляемого конвейера» пула приложений с Интегрированного на Классический.