为什么Response.Cache.SetNoStore()在从System.Web.UI.Page派生的类中不起作用

时间:2011-05-27 14:15:36

标签: asp.net dll external no-cache

作为我工作的一部分,我在注册网站上工作,并且模式显示我尝试并转移到中心BasePage DLL。在这里,我已经创建了过去有用且可重用的方法,例如帮助发送电子邮件的方法和Ninject的依赖注入设置。

注意BasePage是我添加到网站的引用可能很有用。

在这种情况下,我希望会话过期,以便当有人使用浏览器返回事件时,委托人不能重新提交他们的信息。

我使用的代码是:

        // Stop Caching in IE
        Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

        // Stop Caching in Firefox
        Response.Cache.SetNoStore();

它有效,所以我认为在我的BasePage类中有一个方法可以调用禁用缓存,并将页面中的这个调用减少到一行。< / p>

问题是,我认为这部分与事实BasePage是一个引用的DLL有关,如果我使用来自BasePage dll的方法调用,则不会禁用缓存。

有没有人知道我是否可以使用BasePage dll中的此方法调用此方法来禁用页面上的缓存,或者我是否必须将其保留在网站本地?

更新07/07

找到了一些有趣的东西。

有几个网站建议使用会话变量来确定是否有人返回该页面。如果他们是你,那么就开始停止。

您需要noCache,以便页面重新启用Page_Load事件

但我也发现:我有一个包含上述代码的页面,但我有一个自定义验证,必须命中服务器进行验证并返回验证错误。在更正时,使值有效,然后再次提交。按回说页面已过期。

因此,如果我更改了所有验证以使EnableClientScript为false,则任何错误都会导致网络服务器在成功提交后退出按钮事件。

这并没有完全修复它,但它会阻止人们在特定情况下按回来输入无效值。

干杯

0 个答案:

没有答案