【问题标题】:How to use query-sting along with server.transfer?如何将查询字符串与 server.transfer 一起使用?
【发布时间】:2010-02-24 11:44:39
【问题描述】:

目前我们在我们的 asp.net 应用程序中广泛使用查询字符串。几天前,我们正在努力改进网站。为此,我们首先决定不在地址栏上显示网页的完整 url,为此我问了this question regarding it on SO

我们得到的最好方法是使用 server.transfer()。但现在似乎查询字符串不适用于它!有没有办法解决这个问题,所以我们可以使用查询字符串并且不在地址栏上显示网页的 url。请指导。

提前致谢。

【问题讨论】:

    标签: .net asp.net query-string


    【解决方案1】:

    Server.Transfer 应该通过any existing querystring or form collections 传递给被调用的处理程序。

    Transfer 方法保留 QueryString 和 Form 集合。

    如果您正在调用Server.Transfer(path, preserveForm),请确保将第二个参数设置为true

    但是,正如您所发现的,在调用 Server.Transfer 方法时,您无法将路径设置为带有查询字符串的 url。

    还请注意沿此路线走的以下潜在问题:

    1. ASP.NET 不会验证用户是否应该有权访问此资源 - 因此,如果您在网站上使用标准授权机制,您将无法再依赖它们。
    2. 用户将无法为您网站首页以外的任何页面添加书签/发送人员链接/深入链接到您的网站。
    3. 搜索引擎将很难为您的网站编制索引/提供结果,因为他们只会看到一个 URL。

    【讨论】:

    • 我会检查并尽快恢复。
    【解决方案2】:

    为什么要隐藏查询字符串?是否有任何私人信息,如果是这种情况,我建议将其保存在会话中。

    【讨论】:

    • 已经编写了很多关于查询字符串的逻辑和代码......将其完全更改为会话将非常耗时。我们正在探索可以尽快实施的选项。
    【解决方案3】:

    如果您将 Transfer 方法与 PreservForm 一起使用,您可能会遇到视图状态验证问题。 一个页面的回发数据可能与另一页面的预期回发数据不匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多