【问题标题】:Tilde showing in URL instead of mapping to root波浪号显示在 URL 中,而不是映射到根目录
【发布时间】:2011-08-05 13:38:37
【问题描述】:

我们有一个在 2.0 框架上运行的旧 .net 站点。在这个站点中,有多个调用在需要时通过调用 response.redirect() 进行重定向。由于某种原因,我无法弄清楚 ` 字符已停止映射到根 - 实际上显示为路径的一部分。例如:

Response.Redirect("~/shopping/checkout_confirm.aspx?rc=" & 
    MyPayment.ResponseCode & "&rt=" & MyPayment.ResponseText)

现在最终尝试重定向到:

https://www.site.com/shopping/~/shopping/checkout_confirm.aspx?rc=3

我也尝试了以下方法,但没有成功:

Response.Redirect(Page.ResolveUrl("~/shopping/checkout_confirm.aspx?rc=" &
    MyPayment.ResponseCode & "&rt=" & MyPayment.ResponseText))

当在开发环境中运行时,url 映射正确......关于这个问题的原因/解决方法有什么想法吗?

【问题讨论】:

  • MyPayment.ResponseText 中有什么内容?这可能是因为它的价值把事情搞砸了。您可能需要对其进行 URLEncode。
  • 是在您的站点中购买目录还是 IIS(应用程序)中的虚拟目录?还有你的Page.ResolveUrl 电话的结果是什么?
  • 查看这个帖子,希望对你有帮助stackoverflow.com/questions/31221/response-redirect-using-path
  • patmortech 是对的。一旦我对响应进行编码,它就可以正常工作了。

标签: .net asp.net tilde


【解决方案1】:

部分 ResponseText 包含需要编码的字符。

【讨论】:

    【解决方案2】:

    尝试使用相对路径:

    Response.Redirect("checkout_confirm.aspx?rc=" & MyPayment.ResponseCode & "&rt=" & MyPayment.ResponseText)
    

    【讨论】:

    • 这适用于该示例 - 但无法从站点的根目录映射。它不适用于重定向的所有用途。
    猜你喜欢
    • 1970-01-01
    • 2013-07-10
    • 2010-11-03
    • 2016-05-24
    • 2011-08-10
    • 2012-08-27
    • 2016-08-16
    相关资源
    最近更新 更多