2012-02-22 2 views
1

L'exemple de code à http://support.microsoft.com/kb/2527105 est exactement ce dont j'ai besoin pour partager des sessions entre deux sous-domaines. Le seul problème est qu'il ne fonctionne pas dans une situation réelle. Cela fonctionne correctement lorsque le fichier ony demandé est la page elle-même, mais génère une erreur "état de session non disponible dans ce contexte" lorsque d'autres fichiers font partie de la requête, comme si j'ajoute des feuilles de style ou des fichiers javascript à la page. Le code génère cette erreur dans le "if (context.Session = null & &!" Ligne ci-dessous:'l'état de la session n'est pas disponible dans ce contexte' lorsque plusieurs fichiers sont demandés

void context_PostRequestHandlerExecute(object sender, EventArgs e) 
{ 
    HttpApplication context = (HttpApplication)sender; 
    HttpCookie cookie = context.Response.Cookies["ASP.NET_SessionId"]; 

    if (context.Session != null && 
     !string.IsNullOrEmpty(context.Session.SessionID)) 
    { 
     cookie.Value = context.Session.SessionID; 
     if (rootDomain != "localhost") 
     { 
      cookie.Domain = rootDomain; 
     } 
     cookie.Path = "/"; 
    } 
} 
+0

Vous devriez donner un titre décrivant le problème plutôt que de demander si les gens sont familiers avec l'exemple – mydogisbox

+0

Okay, édité le titre, j'espère que cela attire certaines personnes qui sont familières – BeachBum

+0

Je l'ai un peu plus tordu – mydogisbox

Répondre

1

Vous pouvez essayer Try Catch Block, vous pouvez alors piège pour une valeur nulle

.
private HttpSessionState GetSession(HttpApplication context) 
    { 
     try 
     { 
      //On Abadon or Logout this returns "Session state is not available in this context. " 
      return context.Session; 
     } 
     catch (HttpException) 
     { 
      return null; 
     } 
    } 
Questions connexes