В чем же разница между двумя функциями. Результат кажется похожим, за исключением того, что Uri.EscapeUriString кодирует пробелы до %20 и Server.UrlEncode, кодирует их как знак +.
И последний вопрос, который следует использовать предпочтительно