mardi 4 février 2014

Session state has created a session id, but cannot save it because the response was already flushed by the application.

Cette erreur peut se produire lorsque l'on essaie de récupérer le session id d'une session alors que la réponse au client a déja été envoyée. Le sessionID étant passé par cookies, si on n'en a pas envoyé au client, il n'est dés lors, plus possible de lui renvoyer cet ID.

Un petit workaround pour régler ce problème, consiste à toujours créer un sessionID pour chaque utilisateur. Pour implémenter ce comportement, on peut utiliser l'event Session_Start dans le Global.asax avec le code suivant:

void Session_Start(object sender, EventArgs e)
{
    string sessionId = Session.SessionID;
}

Comment déterminer à qui appartient un package oracle à l'exécution

La solution que l'on rencontre le plus souvent pour répondre à cette question, consiste à récupérer dans le context quel est le schéma actuel via la fonction sys_context:

sys_context('userenv', 'current_schema')

Cependant, cette méthode ne fonctionnera pas si l'on se trouve dans une procédure d'un package marquée comme devant s'exécuter en utilisant le schéma actuel (c'est à dire de l'appelant) et non le schéma dans lequel se trouve le package(utilisation de "authid current_user" plus d'info ici)

En effectuant, quelques recherches, j'ai trouvé une autre solution (voir ici) qui consiste à analyser la call stack. La première entrée de cette dernière contiendra le nom du schéma et le nom du package qui est appelé(owner.package), il suffira donc d'extraire la première partie (celle juste avant le point) pour connaitre le propriétaire du package.

Une implémentation est proposée sur le site ou j'ai trouvé la réponse à ma question : http://cbohl.blogspot.be/2011/01/determine-owner-of-package.html