아래에 내 global.asax Session_Start
.net 세션 상태가 세션 ID를 만들었지 만 응답이 이미 응용 프로그램에서 플러시 되었기 때문에 세션 ID를 저장할 수 없습니다.
string myBrowser = Utils.SafeUserAgent(Request);
foreach (string bannedbrowser in BrowserBan.BrowsersToBan)
{
if (myBrowser.IndexOf(bannedbrowser, StringComparison.OrdinalIgnoreCase) > -1)
{
HttpContext.Current.Response.Redirect("/bannedBrowser.htm");
Session.Abandon();
break;
}
그것은 transcoders 내 사이트에 액세스하는 것을 방지합니다. 하지만 지금은 모든 오류가 발생하면
System.Web.HttpException: Session state has created a session id, but cannot
save it because the response was already flushed by the application.
at System.Web.SessionState.SessionIDManager.SaveSessionID(
HttpContext context, String id, Boolean& redirected, Boolean& cookieAdded)
at System.Web.SessionState.SessionStateModule.CreateSessionId()
at System.Web.SessionState.SessionStateModule.DelayedGetSessionId()
at System.Web.SessionState.SessionStateModule.ReleaseStateGetSessionID()
at System.Web.SessionState.SessionStateModule.OnReleaseState(Object source,
EventArgs eventArgs)
at System.Web.SessionState.SessionStateModule.OnEndRequest(Object source,
EventArgs eventArgs)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web
.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,
Boolean& completedSynchronously)
이것은 (예를 들어) Google Transcoder를 통해 액세스하려고 할 때만 발생하지만 왜 발생하는지 그리고 어떻게 방지 할 수 있는지 알고 싶습니다.
새로 고침 사용자 에이전트가 다시 평가할 수 있도록 세션을 포기해야합니다.
: 당신이 (페이지에 액세스하는 특정 브라우저를 방지) 일을 할 것 같다 무엇 일 것 대부분의 상황에서 나쁜 습관을 고려했다. 아마도 스푸핑 될 수있는 클라이언트가 보낸 User-Agent 문자열을 사용하고있을 것입니다. 비 호환성 문제에 대해 사용자에게 경고하기를 원한다면 이는 합리적 일 것입니다. 하지만 당신이 사용하는 언어 ("금지 된 브라우저")에서 나는 이것이 비 호환성 경고 이상이라고 가정합니다. 이미 알고 계시고 이유를 말씀해주십시오. 함정을 명심해야합니다. –
모바일 사이트이며 가끔은 Google 검색에서 사용자가 모든 것을 제거하고 사용자의 expri을 죽이는 구글의 웹 트랜스 코더를 통해 온다. 그리고 사람들/회원은 gogole 트랜스 코더를 프록시로 사용합니다. – nLL
대답은 다음과 같습니다. http://stackoverflow.com/questions/904952/whats-causing-session-state-has-created-a-session-id-but-cannot-save-it-becau/1966562#1966562 – Adi