0

したがって、csページにこのコードがあり、Url文字列からキーをデコードします。キーは「Reauth_URL」であり、base64 で UTF8 にデコードされたリンクです。

////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 を使用しようとしていますが、null refence 例外が引き続き発生しますが、キーと値がそこにあることがわかります。

文字列値 ID を返すことができたら、自分の aspx ページにあるハイパーリンクに送信することができます。

エンコードされた URL は IronPort から設定され、ユーザーが Web サイトからブロックされている場合に別のユーザーとしてログインできるようにします。そのため、クエリ文字列のこの reauth_url キーにより、別のユーザーとしてログインできます。reauth_url によってデコードされ、ハイパーリンクにリンクされる必要があります。キーと値がそこにあることは知っていますが、この null 例外によって取得できません。それらが存在することを知っていると言うとき、明らかに上記のコードの意味ではありません。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>
4

2 に答える 2

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);
        }
    }
于 2013-10-28T19:22:30.097 に答える