J'ai ci-dessous dans mon global.asax Session_Start
.net l'état de session a créé un identifiant de session, mais ne peut pas l'enregistrer parce que la réponse a déjà été rincé par l'application
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;
}
Il empêche transcodeurs accès o mon site. mais chaque maintenant et puis-je obtenir une erreur en disant
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)
cela, il ne se produit que lorsque je tente d'accéder via (par exemple) Google Transcoder mais je veux comprendre pourquoi cela arrive et comment puis-je l'empêcher.
Je dois abandonner la session afin que l'agent utilisateur de rafraîchissement soit réévalué.
En aparté: Ce que vous semblez faire (empêcher certains navigateurs d'accéder à une page) serait considéré comme une mauvaise pratique dans la plupart des circonstances. Vous utilisez probablement la chaîne User-Agent envoyée par le client, qui peut facilement être usurpée. Si vous souhaitiez simplement avertir les utilisateurs des problèmes d'incompatibilité potentiels, cela serait raisonnable. Mais à partir de la langue que vous utilisez ("navigateur banni"), je suppose que c'est plus qu'un avertissement d'incompatibilité. Vous le savez peut-être déjà et avez vos raisons de le faire, bien sûr. Je voulais juste vous assurer de garder les pièges à l'esprit. –
C'est un site mobile et parfois les utilisateurs de google search y accèdent via le transcodeur web de google qui supprime tout et tue l'expérience de l'utilisateur. Et parfois, les personnes/membres utilisent le transcodeur gogole comme proxy. – nLL
La réponse est ici: http://stackoverflow.com/questions/904952/whats-causing-session-state-has-created-a-session-id-but-cannot-save-it-becau/1966562#1966562 – Adi