【问题标题】:Response.Redirect preserves the subdirectory of the webResponse.Redirect 保留 web 的子目录
【发布时间】:2018-01-10 02:34:25
【问题描述】:

我有以下代码在会话超时时重定向,在母版页中调用。

Response.Redirect("~/Login.aspx");

由于某种原因,它可以在开发机器上运行,但不能在 Web 服务器上运行。

假设网站根为http://mywebsite.com/

如果我在http://mywebsite.com/foo/bar/page.aspx 并且发生超时,页面将重定向到http://mywebsite.com/foo/bar/Login.aspx 而不是http://mywebsite.com/Login.aspx,因此会抛出找不到页面异常。

怎么了?

【问题讨论】:

  • 您是否已从 iis 禁用目录列表?
  • 目前已禁用。
  • 希望你也把 Response.Cache.SetCacheability(HttpCacheability.NoCache) 这个给你每个 page_load 事件
  • 我避免在每个 page_load 中添加一些代码,这样做将是一项巨大的工作。如果可以在一个文件中全局完成/有一个配置,那就太好了。
  • 您可以在 global.asax 中的 Application_PreRequestHandlerExecute 事件中执行此操作。

标签: c# asp.net session


【解决方案1】:

我终于设法找到了解决这个问题的方法。解决方法是在Global.asax.cs中的Session_Start函数中添加如下代码。

protected void Session_Start(object sender, EventArgs e)
{
    Response.Redirect("~/Login.aspx");
}

以前,我的代码没有~/,所以它没有重定向到网络根目录。

protected void Session_Start(object sender, EventArgs e)
{
    Response.Redirect("Login.aspx");
}

看来即使我已经在母版页中调用了Response.Redirect("~/Login.aspx");,我仍然需要将这段代码也放入Session_Start

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 2012-09-09
    • 2017-04-11
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多