【问题标题】:Request.Querystring is emptyRequest.Querystring 为空
【发布时间】:2011-12-12 09:18:16
【问题描述】:

这很奇怪..我正在寻找与实际解决方案一样多的研究领域,但这就是问题所在: 在我的 asp.net webform 页面中,我正在测试一个查询字符串,然后应用一些逻辑,但是,查询字符串似乎已从 Url 中删除。 如果我通过了这个

..blah.aspx?blah=123 

然后我可以在 Request.RawUrl 中看到查询字符串没有问题,但是当我传递我正确的查询字符串时

..blah.aspx?Id=123

查询字符串为空。在站点或应用程序级别的 IIS 上没有请求过滤。这还能在哪里被剥夺?两个小时的挠头和数数......

更新:

没有重定向,逻辑在blah.aspx Pre Init事件中:

protected override void OnPreInit(EventArgs e)
{
    if (!string.IsNullOrEmpty(RequestLEID) || !string.IsNullOrEmpty(RequestLEExternalReference))
        DisableNavigationContextCheck = true;

    base.OnPreInit(e);
}

打破这个事件,我正在即时窗口中测试 Request.RawUrl 属性

【问题讨论】:

  • 您能否在您传递的位置发布代码块并重定向到该网址,谢谢您的时间

标签: asp.net iis


【解决方案1】:

如果您在解决方案中使用共享点(例如共享点控件),则 ID 是保留关键字。

【讨论】:

  • 我没有使用共享点控件,并且查询字符串实际上不是 ID(这只是一个例如实际的查询字符串是“LEExternalReference”
【解决方案2】:

恶心。在我们代码的其他地方,我们有一个导航模块。这已更新为使用 RedirectPermanent ,在具有重复查询字符串模式(注意,不是参数本身)的 url 的情况下,不会将查询字符串与 Request 对象一起发送。

RedirectPermanent 是 asp.net 4.0 中的一种新方法,当然不应该在这里使用。

【讨论】:

    【解决方案3】:

    您是否从请求中提取值?

    var RequestLEExternalReference = Request.QueryString["LEExternalReference"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多