1

我有一个令人抓狂的问题(不都是吗?)。

我正在支持一个 Umbraco 4.9.0 站点,该站点遇到了请求上的 QueryString 属性始终为空的问题,但仅在第一次加载页面时。例如,

www.site.com/download.aspx?id=d99fe4df-28d9-4565-b444-b42499fcefd3

在代码隐藏中,在 Page_Load 方法中,我试图获取 id:

var id = Request.QueryString["id"];

除了第一次加载页面外,这都有效。例如,我第一次点击上述网址时,id 为空。如果我立即再次点击该 URL,则 id 将设置为您期望的值。

此外,如果我通过 Visual Studio 停止并重新启动 Web 应用程序,则 id 变量将继续按预期工作。但是,如果我只是简单地修改代码库(下面的示例),它将在第一次再次传递一个未填充的查询字符串,并在任何时间之后工作。

var test = "my modification test";
var id = Request.QueryString["id"];

我还注意到 Request.UrlReferrer 为空,但 Request.Url 为 www.site.com/download.aspx。

任何帮助深表感谢!

4

1 回答 1

4

代替

var id = Request.QueryString["id"];

尝试

var id = Request["id"];

它能做什么?它将尝试按顺序从请求对象中查找此请求变量

  • 请求参数
  • 形式
  • 饼干
  • 客户证书
  • 服务器变量

您可能从“ FORM ”发布事件中获取此变量......所以它将在 Request.Form["id"] .... 而不是查询字符串中。

于 2013-08-13T01:01:52.247 回答