Asp.net 显示旧请求的ASP页面

Asp.net 显示旧请求的ASP页面,asp.net,vb.net,iis,Asp.net,Vb.net,Iis,我有一个ASP.net页面,其中包含用于筛选数据集的字段。当我应用过滤器(通过按钮)时,结果加载良好。如果我导航到另一个页面(在同一会话中),然后返回该页面,我将在页面加载时重新设置过滤器字段的值 有时,字段会很好地重置,有时会返回空白。关于他们什么时候回来,什么时候回来,好的,什么时候回来,空白的,似乎没有任何真正的模式。服务器是否可能正在缓存请求/响应?(IIS),如果没有,那么可能是什么问题?听起来更像是被浏览器缓存了。尝试在页面的HTML中不包含缓存元。听起来更像是由浏览器缓存的。尝试在

我有一个ASP.net页面,其中包含用于筛选数据集的字段。当我应用过滤器(通过按钮)时,结果加载良好。如果我导航到另一个页面(在同一会话中),然后返回该页面,我将在页面加载时重新设置过滤器字段的值


有时,字段会很好地重置,有时会返回空白。关于他们什么时候回来,什么时候回来,好的,什么时候回来,空白的,似乎没有任何真正的模式。服务器是否可能正在缓存请求/响应?(IIS),如果没有,那么可能是什么问题?

听起来更像是被浏览器缓存了。尝试在页面的HTML中不包含缓存元。

听起来更像是由浏览器缓存的。尝试在页面的HTML中不包含缓存元

  • 试试清爽的浏览器
  • iisreset-停止,然后iisreset-启动 重新启动iis
  • 试试清爽的浏览器
  • iisreset-停止,然后iisreset-启动 重新启动iis
    我同意其他人的看法,这是一个缓存问题。如果您没有发送适当的标题,浏览器将缓存您的页面。例如,如果使用浏览器的“上一步”按钮返回页面,则这将由缓存加载,而不是从服务器加载

    为了验证这一点,请在Page_Load方法中放置一个断点,并等待命中它。要禁用缓存,您需要执行以下操作:

    Response.Buffer = true;
    Response.ExpiresAbsolute = DateTime.Now.Add(new TimeSpan(-1,0,0));
    Response.Expires = 0;
    Response.CacheControl = "no-cache";
    

    我同意其他人的看法,这是一个缓存问题。如果您没有发送适当的标题,浏览器将缓存您的页面。例如,如果使用浏览器的“上一步”按钮返回页面,则这将由缓存加载,而不是从服务器加载

    为了验证这一点,请在Page_Load方法中放置一个断点,并等待命中它。要禁用缓存,您需要执行以下操作:

    Response.Buffer = true;
    Response.ExpiresAbsolute = DateTime.Now.Add(new TimeSpan(-1,0,0));
    Response.Expires = 0;
    Response.CacheControl = "no-cache";
    

    如何通过“后退”按钮或单击链接返回初始页面?使用“后退”按钮时,除非删除页面上的缓存,否则服务器端代码不会始终运行。

    如何通过“后退”按钮或单击链接返回初始页面?使用“后退”按钮时,除非您删除页面上的缓存,否则服务器端代码不会始终运行。

    如果您没有使用Ajax(因此,浏览器与检索数据无关),则可能是由于缓存或加载数据时的错误

    作为第一个测试,我将向页面添加一个简单的,并在page_Load方法中写入日期和时间。如果它起作用,您肯定可以忽略缓存作为问题的根源

    现在,如果代码中有问题,您是否依赖cookies(会话变量)、URL参数或任何其他在使用应用程序时可能更改的信息?

    如果您没有使用Ajax(因此,浏览器与检索数据无关),那么这似乎是由于缓存,或者在加载数据时出现错误

    作为第一个测试,我将向页面添加一个简单的,并在page_Load方法中写入日期和时间。如果它起作用,您肯定可以忽略缓存作为问题的根源


    现在,如果代码中存在问题,您是否依赖cookies(会话变量)、URL参数或任何其他在使用应用程序时可能更改的信息?

    是否可能在运行填充字段值的代码之前或期间引发异常

    填充字段值的代码运行之前或运行期间是否可能引发异常

    判断发生了什么的一个相当快速的方法是在从会话中检索内容的行中抛出一些断点,然后进行故障排除


    如果它发生在您看到会话中的内容被拉出之后,并且没有其他有趣的事情发生(例如美味的异常被吞下),那么这意味着这是一个浏览器缓存问题(祝您好运!)

    判断发生了什么的一个相当快速的方法是在从会话中检索内容的行中抛出一些断点,然后进行故障排除


    如果它发生在您看到会话中的内容被拉出之后,并且没有其他有趣的事情发生(例如美味的异常被吞下),那么这意味着这是一个浏览器缓存问题(祝您好运!)

    正在以某种方式缓存ViewState。如果不是您的浏览器,那么您是通过执行缓存的代理服务器连接的。

    另外,您确定没有对会话状态使用InProc以外的内容吗?

    正在以某种方式缓存ViewState。如果不是您的浏览器,那么您是通过执行缓存的代理服务器连接的。

    另外,您确定没有在会话状态中使用InProc以外的内容吗?

    尝试通过查询字符串在页面之间传递“筛选器”


    这将是一个很好的方法来证明(一种或另一种)问题在于缓存/状态,并且您可以看到实际传递的内容

    尝试通过查询字符串在页面之间传递“过滤器”


    这将是一个很好的方法来证明(无论以何种方式)问题在于缓存/状态,并且您可以使用firebug查看实际传递的内容

    ,它说响应是来自缓存的0KB,因此不,浏览器没有缓存它们。请尝试Ctrl+Refresh。也许有一个上游代理你不知道?试过了,随机性仍然存在,你使用Ajax吗?如果是这样的话,你需要随机化你的Ajax调用——有一个很好的IE缓存缺陷,这不是IE特有的,也不是