우리는 .net framework 4.0을 사용하여 asp.net 사이트에서 작업하고 있습니다. 우리는 출력 캐시를 통합하려고했습니다.
그러나 불행히도 그것은 작동하지 않습니다. 나중에 우리는 Microsoft 보안 업데이트 KB2656351
제거 문제를 해결할 것으로 나타났습니다.
업데이트를 제거하지 않고이 작업을 수행 할 수있는 다른 방법이 있는지 알고 싶습니다.출력 캐시가 작동하지 않습니다 .net4.0
답변
위의 언급 업데이트를 설치하고 응답에 쿠키가있는 경우에만이 문제가 발생합니다. 쿠키가 요청에 포함되는지 여부에 관계없이. 이 문제를 해결할 수있는 해결 방법을 찾았습니다. 사용자 지정 HTTPModule을 만들고 응답 (새로 추가 한 쿠키 포함)에서 사용 가능한 모든 쿠키를 Context.Items
에 복사했습니다. 그런 다음 응답에서 사용 가능한 모든 쿠키를 지 웁니다.
다음 단계에서 Context.items에 저장된 개체를 읽고 응답에 다시 추가하십시오. 따라서 출력 캐시 공급자가 페이지를 캐시하려 할 때 응답에 쿠키가 없습니다. 그래서 평소와 같이 작동합니다. 그런 다음 쿠키를 다시 추가하십시오.
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]);
}
}
}
이 업데이트에 대해 here이라는 몇 가지 문제가보고되었으며 .net Framework 4가 복구되었습니다. .NET Framework가 손상되었거나 프레임 워크와 IIS가 설치된 순서 때문에 ASP.Net을 등록 취소 할 수 있으므로 ASP.Net을 등록해야하므로 때때로 이러한 문제가 발생합니다.
. NET 프레임 워크를 복구하고 해당 ASP.Net을 별도로 등록하는 것이 좋습니다.
이 발생합니다. 쿠키가 모두 제거되면 완벽하게 작동하기 때문에 그렇게 생각하지 않습니다. –
4.0에서 문제가 발생하지 않았습니다. 설정을 게시 할 수 있습니까? – Nexus23
설치가 완료되면 Microsoft 보안 업데이트 KB2656351 –