asp.net - session 变量被 Chrome 和 FF 击败

标签 asp.net google-chrome session-variables

在页面加载的 asp.net Web 应用程序中,我获取当前页面 url 并将其存储在 session 变量中以跟踪用户所在的页面,以便他们在进入管理区域时可以返回到该页面,进行一些导航等。然后他们可以单击返回按钮,并会被带到他们在进入管理员之前所在的页面。

这一切都适用于 IE8;但是在 FF 和 Chrome 中,当在管理员中时,返回链接重定向到我为 Web 应用程序设置的自定义 404 页面。

出于测试目的,我在页面加载事件中添加了我在下面编写的代码:

Response.Write((string)Session["navurl"]);// displays "http://somedomain.com/customerror/default.aspx"
Session["navurl"] = currentUrl;//ex. currentUrl = "http://somedomain.com/contact/"
Response.Write((string)Session["navurl"]);//ex. currentUrl = "http://somedomain.com/contact/"

同样,这在 IE 中没有问题,但在页面加载的 FF 和 Chrome 中, session 变量显示 404 页面链接,并在设置后显示正确的链接。我使用 fiddler 来查看发生了什么,Chrome 在 favicon.ico 文件的 GET header 中抛出 404,我没有在此 Web 应用程序中使用它。

我在 site.master 文件和 Chrome 和 FF 的头部添加了 faviocon 文件和链接,现在可以正常工作;我仍然不确定为什么会发生这种情况。任何人都知道我的 Session 变量为什么或如何被 Chrome 或 FF 覆盖?

作为旁注,我已经完成了调试过程,currentUrl 是正确的 url。

最佳答案

好吧,如果您使用 .NET 处理程序来为所有页面(即所有文件扩展名)提供服务,那么当您的浏览器向 favicon.ico 发出请求(谷歌以了解这是什么)时,服务器失败是有道理的找到它,然后重定向到 404。这又将 Session 变量修改为“最后提供的页面”:404。

现在,当您呈现管理页面,并在 session 中查询“最后提供的页面”时,您会得到什么? “404”。

我建议在将其存储在 session 中之前检查 URL 以查看它是否指向用户可导航的页面

if (IsAUserPage(currentUrl)
  Session["navurl"] = currentUrl;

关于asp.net - session 变量被 Chrome 和 FF 击败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4903846/

相关文章:

asp.net - 通过从 xml 文件读取 Accordion 菜单

javascript - 调用服务器方法,无需刷新页面

asp.net - 从 HTML 帮助程序中的参数获取属性

php - 注销时取消设置 session 问题

java - 如何保持 session 属性

asp.net-mvc - 默认期限(20 分钟)后 MVC 5 session 超时

c# - 如何在 C# 中将一种日期格式更改为另一种日期格式,例如 10/10/2014 更改为 2014-10-10(年-月-日)?

html - 仅当我在 Chrome 中选择检查元素时,我页面上的 css 菜单栏才有效

image - Chrome 27 不再加载背景图片

javascript - 在 Firefox 中获取计算背景样式