Umbraco Request.QueryString 如果这是第一次加载页面,则为 null



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

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

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

在后面的代码中,在Page_Load方法上,我试图获得id:

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

除了第一次加载页面外,其他操作都有效。例如,我第一次点击上面的URL时,id为null。如果我立即再次点击URL,id将被设置为您期望的值。

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

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

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

非常感谢您的帮助!

而不是

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

尝试

var id = Request["id"];

它做什么?它将尝试按照的顺序从请求对象中找到这个请求变量

  • QueryString
  • 表单
  • Cookie
  • 客户端证书
  • 服务器变量

您可能是从"FORM"post事件中得到这个变量的。。。因此它将在Request.Form["id"]…中,而不是在查询字符串中。

最新更新