2013-10-25 3 views
0

Итак, у меня есть этот код на моей странице cs, который принимает декодирование ключа из моей строки Url. Ключ «Reauth_URL» и его ссылка, декодированная в base64 на UTF8.base64 decode null ссылка excpetion по URL

////base 64 decoding for Reauth_URL key in URL query string 
    string encodedString =  Convert.ToString(HttpContext.Current.Request.Params["Reauth_URL"]).Trim(')'); 
    byte[] data = Convert.FromBase64String(encodedString); 
    string decodedString = Encoding.UTF8.GetString(data); 

Я пытаюсь использовать decodedString, но я продолжаю получать исключения нулевого refence, но я могу видеть, что ключ и значение есть.

как только я могу вернуть идентификатор строкового значения, чтобы он мог отправить его в гиперссылку, которая находится на моей странице aspx.

Зашифрованный URL-адрес настроен из IronPort, который позволяет пользователю использовать lg в качестве пользователя, отличного от того, были ли они заблокированы с веб-сайта. поэтому этот ключ reauth_url в строке запроса позволяет им регистрироваться как другой пользователь. по reauth_url необходимо декодировать и связать с гиперссылкой. Я знаю, что ключ и значение есть, но я не могу получить это нулевое исключение, и когда я говорю, что знаю, что они есть, очевидно, я не имею в виду в коде выше, ive должен был разделить запрос url? и & и распечатайте его в другом месте, и они существуют. Код ниже используется раньше, и мне нужен ключ и значение.

string currentUrl = HttpContext.Current.Request.Url.Query; 
    txtBlockedUrl.Visible = true; 
    string [] result = currentUrl.Split(new Char[]{'?','&'}); 

    foreach (string r in result) 
    { 
     txtBlockedUrl.Text += HttpUtility.UrlDecode(r) + "\n"; 
    } 

div style="font-size: medium"> 
    <a href="<%=decodedString%>" style="text-decoration: none; border-bottom: 1px dotted blue;">LogIn as Different User</a> 
</div> 
+0

Если вы отлаживать шаг за шагом через этот код вы должны увидеть, на какой строке это происходит. – joe

+0

прямо в первой строке, запрашивающей параметр reauth_url, он уже имеет значение null, но если сделать запрос.params ['reuth_url'] на общий ярлык для отладки, он появится, а затем возьмите его и перейдите на сайт декодера и вставьте закодированная строка и декодирует ее, появляется расшифрованный URL-адрес – KBriz

ответ

0

в конечном итоге делает это ....

//splitting url string for textbox using name value collection 
    NameValueCollection collection = new NameValueCollection(); 
    string currentUrl = HttpContext.Current.Request.Url.Query; 
    string [] result = currentUrl.Split('&'); 
    foreach (string r in result) 
    { 
     string[] parts = HttpUtility.UrlDecode(r).Split('='); 
     if (parts.Length > 0) 
     { 
      string key = parts[0].Trim(new char[] { '?', ' ' }); 
      string val = parts[1].Trim(); 

      collection.Add(key, val); 
     } 
    } 
0

Если HttpContext.Current.Request.Params["Reauth_URL"] имеет нулевое значение, Convert.ToString выбросит нулевое ссылочное исключение.

Обратите внимание: Params indexer вернет null, когда «Reauth_URL» недоступен.
Таким образом, вы должны проверить в первую очередь, если она существует (? Что, если URL не обеспечивает его)

string value = HttpContext.Current.Request.Params["Reauth_URL"]; 
if (value!=null) { 
    string encodedString = Convert.ToString(HttpContext.Current.Request.Params["Reauth_URL"]).Trim(')'); 
    //...