Asp.net 为什么Response.Cache.SetNoStore()不能在从System.Web.UI.Page派生的类中工作

Asp.net 为什么Response.Cache.SetNoStore()不能在从System.Web.UI.Page派生的类中工作,asp.net,dll,external,no-cache,Asp.net,Dll,External,No Cache,作为我工作的一部分,我在注册网站上工作,并且我尝试将模式分包到一个中心BasePageDLL。在这里,我在过去创建了有用且可重用的方法,例如帮助发送电子邮件的方法和Ninject的依赖项注入设置 请注意,BasePage是我添加到网站的参考 在这种情况下,我希望会话过期,以便当有人使用browser back事件时,代理无法重新提交其信息 我使用的代码是: // Stop Caching in IE Response.Cache.SetCacheability(S

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

请注意,
BasePage
是我添加到网站的参考

在这种情况下,我希望会话过期,以便当有人使用browser back事件时,代理无法重新提交其信息

我使用的代码是:

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

        // Stop Caching in Firefox
        Response.Cache.SetNoStore();
它是有效的,因此我认为在我的
BasePage
类中有一个方法会很有用,我可以调用该方法来禁用缓存,并将页面中执行此操作的调用减少到一行

问题是,我认为这部分是因为
BasePage
是一个引用的DLL,如果我使用
BasePage
DLL中的方法调用,缓存不会被禁用

有人知道我是否有办法从我的
BasePage
dll调用此方法来禁用页面上的缓存,还是我必须将其保留在网站的本地

2007年7月更新

我发现了一些有趣的东西

一些网站建议使用会话变量来确定是否有人返回页面。如果他们是你,那就开火,停下来

您需要
noCache
,以便页面重新刷新
page\u Load
事件

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

因此,如果我更改所有验证,使
EnableClientScript
为false,那么一旦成功提交后退按钮事件,任何错误都将导致Web服务器超时

这并不能完全解决这个问题,但在输入无效值的特定情况下,它会阻止人们后退

干杯


Luke

代码是位于pase页还是派生页中,或者基页是否驻留在特定的DLL中,应该没有区别。如果您确定代码在两个实例中都被调用,则更有可能是某些逻辑错误阻止了基页方法的调用,而不是它不起作用。这就是我所想的,代码确实被调用了,我已经跟踪到了dll。无论出于什么原因,它都会导致不同的行为。我明天再试一次,它可能已经被缓存了,谁知道呢。