我们正在使用.net framework 4.0开发一个asp.net站点。并且我们试图为它输入缓存。
但不幸的是,它没有奏效。后来我们发现删除Microsoft安全更新KB2656351
将解决问题。
我想知道有没有其他方式可以做到这一点,而无需删除更新。输出缓存不工作.net4.0
3
A
回答
1
只有当您安装上述提及更新并且响应中有一个cookie时,此问题才存在。无论Cookie是否包含在请求中。找到解决此问题的解决方法。我创建了一个自定义的HTTPModule,并将所有可用的cookie从响应(包括新添加的cookie)复制到Context.Items
。然后清除响应中可用的所有Cookie。
在下一步中,读取存储在Context.items中的对象并将其添加回响应。所以当输出缓存提供者试图缓存页面时,响应中没有cookie。所以它照常运作。然后再添加cookies。
public void Init(HttpApplication context)
{
context.PostReleaseRequestState += new EventHandler(OnPostReleaseRequestState);
context.PostUpdateRequestCache += new EventHandler(OnPostUpdateRequestCache);
}
public void OnPostReleaseRequestState(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
HttpCookieCollection cookieCollection = new HttpCookieCollection();
foreach (string item in context.Response.Cookies)
{
HttpCookie tempCookie = context.Response.Cookies[item];
HttpCookie cookie = new HttpCookie(tempCookie.Name) { Value = tempCookie.Value, Expires = tempCookie.Expires, Domain = tempCookie.Domain, Path = tempCookie.Path };
cookieCollection.Add(cookie);
}
context.Items["cookieCollection"] = cookieCollection;
context.Response.Cookies.Clear();
}
public void OnPostUpdateRequestCache(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
HttpCookieCollection cookieCollection = (HttpCookieCollection)context.Items["cookieCollection"];
if (cookieCollection != null)
{
foreach (string item in cookieCollection)
{
context.Response.Cookies.Add(cookieCollection[item]);
}
}
}
0
对于此更新,报告有一些问题here,并且修复.net Framework 4工作。这可能是因为.net Framework的损坏或者安装了框架和IIS的顺序,它们会注销ASP.Net,所以我们需要专门注册ASP.Net,这有时会导致这些问题。
我建议修复.Net框架,并注册ASP.Net分开看看是否有效。
+1
我不这么认为,因为如果我删除所有的cookie,它的工作完美。 –
相关问题
- 1. ASP.NET输出缓存不工作在IIS7.5
- 2. Asp.Net输出缓存不工作
- 3. CodeIgniter输出缓存如何工作?
- 4. PHP输出缓冲不工作
- 5. codeigniter输出缓存不起作用?
- 6. 缓存不工作
- 7. Asp.net mvc输出缓存不工作与RedirectToAction
- 8. 输出缓存并不WordPress的PHP文件工作
- 9. 闪存缓存不工作
- 10. ActionFilter不缓存的输出
- 11. 输出缓存
- 12. 查询缓存不工作
- 13. git rm - 缓存不工作
- 14. 视频缓存不工作
- 15. Smarty缓存不工作?
- 16. APC缓存不工作
- 17. 无缓存不require.js工作
- 18. 弹簧缓存不工作
- 19. UIWebView缓存不工作
- 20. 角$ http缓存不工作
- 21. 缓存PHP输出
- 22. 缓存HTML输出
- 23. 与输出缓存和其他行动工作滤清器
- 24. 使用webgarden时输出缓存是否工作?
- 25. 这些页面输出缓存设置如何工作?
- 26. 使用webusercontrol获取输出缓存以在ASP.net中工作
- 27. 如何测试输出缓存在CodeIgniter中正常工作?
- 28. PDFLib DLL无法在.net4.0中工作
- 29. 页面输出缓存不跟踪
- 30. 输出缓存 - 不会用varybyparam清除缓存
我没有遇到4.0的问题,请问您可以发布您的配置吗? – Nexus23
安装后发生的Microsoft安全更新KB2656351 –