Response.Redirect与另一个站点的问题

时间:2013-01-28 14:08:26

标签: asp.net vb.net response.redirect

我正在创建一个网关应用,它将控制对各种其他应用(工具)的访问。

在访问该站点时,将标识用户并显示他们有权访问的工具列表。单击该链接可将用户带到该工具。 URL附加了一个令牌作为查询字符串。令牌已加密。

在到达工具站点时,系统会检查是否存在带令牌的查询字符串。它检查令牌是否有效(日期是加密的一部分)。如果确定,则令牌也会保存为cookie,有效期为8小时,并且授予访问权限。

如果用户直接从书签点击工具站点,系统会再次检查是否有令牌并且它是否有效。如果没有令牌作为查询字符串传递,则系统将查看它是否仍具有有效的cookie。如果没有有效的令牌或cookie,则站点将调用response.redirect以及两个查询字符串t和r。 t是工具的数字ID,r是工具URL。

应该发生的情况是,用户将被重定向到网关,网关将检查用户是否有权访问工具ID t,以及是否已将重定向重定向回r,并附加一个新的令牌作为查询字符串。

我的代码有以下内容....

Private GatewayURL As String = "http://GatewayURL/default.aspx?t=2&r="
Private ToolURL As String = "http://ToolURL/default.aspx" 
In my page load I have….
…
If AuthenticationPass = False Then
    'We are not authenticated...
    Response.Redirect(GatewayURL & ToolURL, True)
End If
…

不幸的是,当触发此操作时,我收到以下错误...

Invalid path for child request 'http://GatewayURL/default.aspx'. A virtual path is expected.

我已经完成了解决这个问题的想法....任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

您应该URL encode查询字符串参数:

Response.Redirect(GatewayURL & HttpUtility.UrlEncode(ToolURL), True)

以便您重定向到:

http://GatewayURL/default.aspx?t=2&r=http%3A%2F%2FToolURL%2Fdefault.aspx

而不是:

http://GatewayURL/default.aspx?t=2&r=http://ToolURL/default.aspx

第二个是一个非常破碎的网址。