IIS内核模式缓存导致串号问题
2014-03-29 15:40
357 查看
最近系统遇到一个很不可思议的问题,在使用过程中出现界面显示的名字不是用户自己的名字,而是变成另一个人的名字,出现了串号现象。经过不断的调试追踪,终于找出了问题症结所在,就是配置了IIS内核模式缓存。为了说明问题,写了两个测试页面:
第一个页面:Default.aspx模拟用户登录
前端部分:
第二页面:展示用户名
前端部分
后端部分:
配置IIS内核模式缓存
1.打开IIS选择输出缓存
2.配置输出缓存加上,文件扩展名.aspx,勾选内核模式缓存,使用文件更改通知
3.配置结果如下
用户chrome和IE分别打开Default.aspx页面
IE用User1登录,chrome用user2登录:
不断刷新两个浏览器
会发现IE也变成user2,这就是看到用户串号的结果。
输出缓存是会保留页面的副本,不会执行页面的代码的。为了保持正确,如果设置了内核模式缓存可以在页面url加上请求参数来区别,如
如果使用了用户模式缓存,则要在高级设置里面加上请求参数如:
结语:
在IIS设置输出缓存得注意了,这个是对全局有效的,如果页面显示的内容跟使用用户权限有关的,那么可能导致整个系统不可以用。
第一个页面:Default.aspx模拟用户登录
前端部分:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestCache.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>登录</title> </head> <body> <form id="form1" runat="server"> <div> 用户名: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="确定" onclick="Button1_Click" /> </div> </form> <p> IIS-输出缓存-添加:</p> <p> 文件扩展名 .aspx</p> <p> 内核模式缓存</p> <p> 文件缓存监视 使用文件更改通知</p> </body> </html>后端部分:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace TestCache { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { Session["UserInfo"] = TextBox1.Text; Response.Redirect("WebForm1.aspx"); } } }
第二页面:展示用户名
前端部分
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestCache.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>显示名称</title> </head> <body> <form id="form1" runat="server"> <div> 用户名:<asp:Label ID="lbUserName" runat="server" ></asp:Label> </div> <div> <%=Request.UserAgent %> </div> <div>不断的刷新我!记得要不同浏览器哦!</div> </form> </body> </html>
后端部分:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace TestCache { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string username= Session["UserInfo"] as string; if(string.IsNullOrEmpty(username)) Response.Redirect("Default.aspx"); lbUserName.Text = username; } } }
配置IIS内核模式缓存
1.打开IIS选择输出缓存
2.配置输出缓存加上,文件扩展名.aspx,勾选内核模式缓存,使用文件更改通知
3.配置结果如下
用户chrome和IE分别打开Default.aspx页面
IE用User1登录,chrome用user2登录:
不断刷新两个浏览器
会发现IE也变成user2,这就是看到用户串号的结果。
输出缓存是会保留页面的副本,不会执行页面的代码的。为了保持正确,如果设置了内核模式缓存可以在页面url加上请求参数来区别,如
如果使用了用户模式缓存,则要在高级设置里面加上请求参数如:
结语:
在IIS设置输出缓存得注意了,这个是对全局有效的,如果页面显示的内容跟使用用户权限有关的,那么可能导致整个系统不可以用。
相关文章推荐
- .Net_IIs缓存和内核模式下的缓存
- linux2.6.37内核接两个硬盘导致读写效率变低的问题
- 停电导致IIS问题,解决inetinfo的CPU占用很大
- 解决RHEL7.0重启网卡后提示进入紧急模式状态导致修改不成功的问题
- (转)关于模式窗体的缓存问题的解决方案
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- IIS被挂马,导致 ASP 中 Session 失效的问题
- 注意IIS 7.0的集成管道模式下HttpApplication 请求管道事件的问题
- Ubuntu 16.04升级4.7.0内核后导致Compiz奔溃,问题:compiz[4852]: segfault at 48 ip 00007f88cae087f0 sp 00007ffce354c268 error 4 in libscale.so
- 导致企业营销模式脱节的几宗问题
- Outlook 2013连接到Office 365时缓存模式与联机模式下的流量问题
- Linux rescue模式修复由于libc.so.6错误导致系统所有命令不可用的问题
- asp.net处理删除网站下文件夹导致iis重启session丢失的问题
- linux2.6.37内核接两个硬盘导致读写效率变低的问题
- IIS设置导致 WebForm_PostBackOptions未定义 问题解决
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- ListView的缓存数据复用导致的显示错乱问题
- 解决安装完IIS后导致路由器IP 192.168.0.1无法登陆的问题
- cdn缓存导致的一次上传并转码覆盖源文件,导致文件有的不能访问问题
- 解决:在阻止缓存的inspect模式下无法drawImage()的问题