所以我在我的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 但我不断收到空引用异常,但我可以看到键和值在那里。
一旦我可以返回字符串值 id,就可以将其发送到我的 aspx 页面上的超链接中。
编码的 url 是从 IronPort 设置的,如果用户被网站阻止,则允许用户以其他用户身份登录。所以查询字符串中的这个 reauth_url 键允许他们以不同的用户身份登录。reauth_url 需要解码并链接到超链接。我知道键和值在那里,但我无法通过这个空异常得到,当我说我知道它们在那里时,我显然不是在上面的代码中,我不得不将 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>