我需要从ReturnUrl查询字符串中访问其他查询字符串参数。
整个网站需要身份验证,因此如果用户未登录或超时,所有网页都将重定向到登录页面。因此www.mysite.com/Default.aspx?id=H1234
将重定向到www.mysite.com/login.aspx?ReturnUrl=%2fDefault.aspx%3fid%3dH1234
,如果用户输入他们的凭据,他们将返回Default.aspx
传递ID,但我也需要检查登录页面上的ID。
在登录页面上我可以Server.UrlDecode(Request.RawUrl
):/login.aspx?ReturnUrl=/Default.aspx?id=H1234
但由于这有2个问号,我现在无法访问Request.QueryString("id")
我可以使用子字符串方法来提取值,但这让我担心,因为id不是固定的长度,而且似乎不安全。
Google上似乎没有多少(或者至少我没有问正确的问题)
答案 0 :(得分:0)
没有答案?
这是我设法组建的内容:
Private Function GetParam(ByVal paramName As String,
ByVal paramMaxLength As Integer) As String
Dim paramValue As String = String.Empty
Dim url As String = Server.UrlDecode(Request.RawUrl())
If Not url.Contains(paramName) Then
Return paramValue
End If
url = url.Substring(url.LastIndexOf("?") + 1)
ExtractParamValue(paramName, paramValue, url)
If paramValue.Length > paramMaxLength Then
paramValue = paramValue.Remove(paramMaxLength)
End If
Return paramValue
End Function
和
Private Shared Sub ExtractParamValue(ByVal paramName As String,
ByRef paramValue As String,
ByVal url As String)
For Each valuePair As String In url.Split("&")
If valuePair.StartsWith(paramName) Then
paramValue = valuePair.Substring(paramName.Length + 1)
End If
Next
End Sub