Asp.Net Url Encode, Decode

Geçen gün bir projede url yi adres çubuğundan gönderip diğer taraftan da alıp yönlendirmem gerekiyordu. Normalde Server.HtmlEncode ve HtmlDecode ile gelen adresi sorunsuz bir şekilde gönderip almam gerekiyordu fakat & (ampersand) karakterinde problem oluştuğunu gördüm, sonradan diğer karakterlerde de sıkıntı olabilir diye aşağıdaki fonksiyonu yazdım. Kullanımı şu şekilde;

Adresi Encode etmek için: UrlDencode(“buraya url gelecek”,true)
Adresi Decode etmek için: UrlDencode(“buraya url gelecek”,false)

public static string UrlDencode(string adres, bool encode)
    {
        string[] karakter = { "<", ">", "#", "%", "{", "}", "|", @"\", "^", "~", "[", "]", "`", ";", "/", "?", ":", "@", "=", "&", "$" };
        string[] donustur = { "%3C", "%3E", "%23", "%25", "%7B", "%7D", "%7C", "%5C", "%5E", "%7E", "%5B", "%5D", "%60", "%3B", "%2F", "%3F", "%3A", "%40", "%3D", "%26", "%24" };

        if (encode)
        {
            for (int i = 0; i < karakter.Length; i++)
            {
                adres = adres.Replace(karakter[i], donustur[i]);
            }
        }
        else
        {
            for (int i = 0; i < donustur.Length; i++)
            {
                adres = adres.Replace(donustur[i], karakter[i]);
            }
        }
        return adres;
    }