我爱Aspx >> Asp.Net >> 通过避免10 个常见 ASP.NET 缺陷使网站平稳运行? 最近没有访问网站(因此也没有对应的会话)的用户请求一个启用了输出缓存的页面,但是其输出当前在缓存中不可用。
? 该请求执行用于访问用户最新创建的会话的代码,从而导致会话 ID Cookie 在响应的 Set-Cookie 标头中返回。
? OutputCacheModule 向 Http.sys 提供输出,但是无法从响应中删除 Set-Cookie 标头。
? Http.sys 在后续的请求中返回缓存响应,误将其他用户连接到会话。
故事的寓意又是什么呢?会话状态和内核模式输出缓存不能混合使用。如果您在启用输出缓存的页中使用会话状态,并且应用程序在 IIS 6.0 上运行,则您需要关闭内核模式输出缓存。您仍将受益于输出缓存,但是因为内核模式输出缓存比普通输出缓存快得多,所以缓存不会同样有效。有关此问题的详细信息,请参见 support.microsoft.com/kb/917072。
您可以通过在页面的 OutputCache 指令中包含 VaryByParam="*" 属性来关闭单个页面的内核模式输出缓存,虽然这样做可能导致内存需求骤增。另一种更安全的方法是通过在 web.config 中包含下列元素来关闭整个应用程序的内核模式缓存:
<httpRuntime enableKernelOutputCache="false" />
您还可以使用注册表设置来全局性地禁用内核模式输出缓存,即禁用全部服务器的内核模式输出缓存。有关详细信息,请参见 support.microsoft.com/kb/820129。
每次我听到客户报告会话发生了费解的问题,我都会询问他们是否在任何页面中使用了输出缓存。如果确实使用了输出缓存,并且宿主操作系统是 Windows Server 2003,我会建议他们禁用内核模式输出缓存。问题通常就会迎刃而解。如果问题没有解决,则错误存在于代码中。警惕!
返回页首
Forms 身份验证票证生存期
您能找出以下代码的问题吗?
FormsAuthentication.RedirectFromLoginPage(username, true);
此代码看似没有问题,但决不能在 ASP.NET 1.x 应用程序中使用,除非应用程序中其他位置的代码抵消了此语句的负面作用。如果您不能确定原因,请继续阅读。
FormsAuthentication.RedirectFromLoginPage 执行两个任务。首先,当 FormsAuthenticationModule 将用户重定向到登录页时,FormsAuthentication.RedirectFromLoginPage 将用户重定向到他们原来请求的页面。其次,它发布一个身份验证票证(通常携带在 Cookie 中,而且在 ASP.NET 1.x 中总是携带在 Cookie 中),这个票证允许用户在预定的一段时间内保持已经过身份验证状态。
问题就在于这个时间段。在 ASP.NET 1.x 中,向 RedirectFromLoginPage 传递另一个为 false 的参数会发出一个临时身份验证票证,该票证默认情况下在 30 分钟之后到期。(您可以使用 web.config 的 元素中的 Timeout 属性来更改超时期限。)然而,传递另一个为 true 的参数则会发出一个永久身份验证票证,其有效期为 50 年!这样就会发生问题,因为如果有人窃取了该身份验证票证,他们就可以在票证的有效期内使用受害者的身份访问网站。窃取身份验证票证有多种方法 — 在公共无线访问点探测未加密的通信、跨网站编写脚本、以物理方式访问受害者的计算机等等 — 因此,向 RedirectFromLoginPage 传递 true 比禁用您的网站的安全性好不了多少。幸运的是,此问题已经在 ASP.NET 2.0 中得到了解决。现在的 RedirectFromLoginPage 以相同的方式接受在 web.config 中为临时和永久身份验证票证指定的超时。
Ҷƪл˵?
ASP.NET 2.0服务器控件与form ru..[04-21]
使用 C# .NET 写入事件日志[04-21]
ASP.NET 2.0中Page事件的执行顺序[04-21]
ASP.NET Atlas 強力支援您期待已..[04-21]
在ASP.NET Atlas中调用Web Servi..[04-21]
文件压缩代码(为.Net2.0新增)[04-21]
ASP.NET 2.0+Atlas编写鼠标拖放程..[04-21]
ASP.NET2.0中Gridview中数据操作..[04-21]
ASP.NET 2.0中使用multiview控件[04-21]
ASP.NET 2.0中实现跨页面提交[04-21]
ASP.NET 2.0服务器控件与form ru..[04-21]
使用 C# .NET 写入事件日志[04-21]
我的可爱的小外甥们小侄子们[04-21]
一个高中毕业生关于互联网创业的..[04-21]
BSP 模式的一些思考和结论[04-21]
RSS2.0中文规范详解及示例[04-21]
网易部落的rss弱智错误[04-21]
ASP.NET 2.0中Page事件的执行顺序[04-21]
雅虎搜虫大行动----快来抓毛毛虫..[04-21]
为什么XML文件的分析结果出现乱码..[04-21]