0

我正在尝试使用以下代码捕获引用 URL。重定向到页面不起作用。请帮我解决问题。

  if (!Page.IsPostBack)
    {
        ViewState["PreviousPage"] = Request.ServerVariables["HTTP_REFERER"];
    }

  protected void btnLogin_Click(object sender, EventArgs e)
  {
    if (ViewState["PreviousPage"] != null)
       {
          Response.Redirect(ViewState["PreviousPage"].ToString());
       }
  }
4

4 回答 4

1

我不确定它是否会有所帮助,但您也可以尝试使用请求对象的 url referrer 属性来访问它。

Request.UrlReferrer
于 2013-07-24T19:17:36.793 回答
1

在我看来,您可能正在这里重建轮子。

默认情况下,有一种内置的 .NET 方法可以使用表单身份验证来执行此操作。您将获得一个查询字符串以自动将您重定向到应用程序中的页面。您在未登录时点击了一个页面,该应用程序会记住您在登录之前想去的地方,并在您进行身份验证时将您发送到那里。

那是你想要做的吗?

于 2013-07-24T19:34:20.137 回答
0

这可能有效

Response.Redirect((ViewState["PreviousPage"]+".aspx"));

于 2013-07-24T19:27:46.697 回答
0

这里可能会发生一些事情。

如果您直接访问登录页面,则referer 始终为空。因此,请确保您的代码可以处理该问题。

您还没有说在哪里if (!Page.IsPostBack),如果它在 Page_Init 中,您的问题很可能ViewState["PreviousPage"] = Request.ServerVariables["HTTP_REFERER"];不会ViewState在回发期间持续存在。

您可以通过将支票移入Page_Load或添加ViewState.SetDirty(true);Page_InitComplete.

另一个可能的问题是某些浏览器出于HTTP_REFERER隐私原因删除了标题。同样,确保您的代码处理为 null 的值。

于 2013-07-24T20:44:07.580 回答