在IIS6上的ASP.NET中使用#include进行奇怪的缓存

时间:2009-04-02 14:49:43

标签: asp-classic iis-6 asp.net-3.5

我从ASP.NET文件中获得了经典的ASP样式#include: (! - #include file =“../../ maininc.aspxinc” - )

(猜猜它实际上是一个IIS服务器端包含?)

这是一些奇怪的缓存。似乎原始文件被缓存,因此maininc.aspxinc中的更改无效。

  1. IIS6
  2. 据我所知,到期标头已关闭
  3. Asp.NET 3.5(简单,不是Web表单)。
  4. 发生了什么事?我能做什么?动态类型应该不同吗? (我知道在ASP.NET中这通常是一个控件: - )

1 个答案:

答案 0 :(得分:1)

考虑使用Web服务器控件而不是#include。见http://msdn.microsoft.com/en-us/library/3207d0e3.aspx

没有任何奇怪的缓存,但正在进行编译。页面在首次访问时只编译一次,结果程序集存储在临时文件夹中。对同一页面的后续请求只是传递给程序集中的HttpHandler。

如果修改页面,则ASP.NET会检测到现有程序集不再匹配和重建。我强烈怀疑在这种机制中没有考虑#includes。

你最好选择以下方法之一: -

  • 如果include表示一组HTML控件,则为UserControl(扩展名为.ascx的文件)。
  • 如果包含用于常用导航标记以供多页使用
  • ,请使用母版页
  • 如果要包含一些常用类,则App_Code中的源代码文件(.vb或.cs)。
  • 为bin文件夹构建dll的单独库项目。