如何使用query-string和server.transfer?

时间:2010-02-24 11:44:39

标签: .net asp.net query-string

目前我们在asp.net应用程序中广泛使用query-string。几天前我们一直致力于改善网站。在此我们首先决定不在地址栏上显示网页的完整网址,我问this question regarding it on SO

我们得到的最好方法是使用server.transfer()。但现在看来查询字符串不能用它!有没有解决方法,所以我们可以使用查询字符串,不要在地址栏上显示网页的网址。请指导。

提前致谢。

3 个答案:

答案 0 :(得分:2)

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

  

Transfer方法保留QueryString和Form集合。

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

但是,正如您所发现的那样,在调用Server.Transfer方法时,无法使用查询字符串设置URL的路径。

请注意沿着这条路线出现以下潜在问题:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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