2017-05-18 1 views
0

Ce que je voudrais faire est de créer différentes valeurs de cookies pour les différents navigateurs dans l'environnement .NET (cache avec la même fonctionnalité est également ok, mais je ne pouvais pas comprendre comment utiliser le cache pour ça). Pour clarifier, je veux que les utilisateurs puissent ouvrir mon application web dans différents navigateurs simultanément (par exemple sur Chrome et Firefox en même temps) où différentes valeurs d'un cookie peuvent être utilisées sur les différents navigateurs (par exemple: http://www.youtube.com/user/ , le nom de cookie est "MyCookieKey", je voudrais stocker une valeur V1 pour Chrome et stocker une valeur différente V2 pour Firefox). Et le cookie devrait être valide uniquement pour le client..net créer des cookies côté client pour les différents navigateurs

Ce que j'ai essayé jusqu'à présent (séparément):

HttpContext.Current.Request.Cookies, 

HttpContext.Current.Response.Cookies, 

HttpCookieCollection. 

Quand je l'ai utilisé HttpContext.Current.Request ou HttpContext.Current.Response, mon application ne fonctionne pas (je ne pouvais pas comprendre exactement ce que le problème) .

Lorsque j'ai utilisé HttpCookieCollection, différents navigateurs partageaient le cookie.

Cordialement.

+0

Les navigateurs ne doivent pas «partager» le cookie. Voulez-vous dire que vous avez envoyé le même cookie aux deux navigateurs? Si oui, comment testez-vous le type de navigateur? – Orangesandlemons

+0

J'ai créé un cookie nommé "Domain". Dans mon application, l'utilisateur peut changer pour url et se connecter à d'autres applications Web similaires. Dans ce cookie je garde le domaine sélectionné de l'application. Par exemple j'ai 2 domaines, website1.com et website2.com et l'utilisateur est capable de changer le domaine. L'URL par défaut de l'application est website1.com, tout en utilisant l'application, l'utilisateur est autorisé à changer de domaine en site Web2. Si l'utilisateur modifie le domaine dans Chrome, jusqu'à la fermeture du navigateur (ou la déconnexion de l'utilisateur), l'application s'exécute dans la nouvelle URL sélectionnée (website2.com). Cependant, cela affecte également le domaine de l'application pour les autres navigateurs (par exemple Firefox). ++ –

+0

++ Une fois que l'utilisateur a sélectionné website2.com dans Chrome, dans Firefox, l'URL par défaut devient Website2.com ou vice versa. Ce que je veux, c'est que si l'utilisateur change de domaine, qu'il soit conservé sur le navigateur mais n'affecte pas l'autre navigateur. Domaine est juste un exemple ici, considérez-le comme quelque chose doit être conservé pour la session pour clientide et séparément pour différents navigateurs. A propos des tests, je rhum mon programme pour différents navigateurs simultanément, en faisant cela, je vois que cela ne fonctionne pas comme je le souhaite. –

Répondre

0

Les applications Web en général ne gardent pas trace des machines distinctes qui y accèdent, elles gardent simplement la trace des différents navigateurs Sessions. Chaque instance d'un client se connectant à votre application va générer une nouvelle session, et les informations sur cette session sont généralement gérées via un cookie spécial nommé ASP.NET_SessionId. La configuration pour le suivi de la session permet de changer le nom du cookie ou d'utiliser le suivi non-cookie. Ce suivi de Sessions peut être utilisé de différentes manières pour différencier les différents navigateurs.

Une méthode consisterait pour votre application à suivre le nombre de sessions. Cela se fera via global.asax et en ajoutant aux différents événements d'application et de session. Il y a quelques réponses dans le thread SO intitulé How to count Sessions in ASP.Net.

protected void Application_Start() { 
    Application["LiveSessionsCount"] = 0; 
} 

protected void Session_Start() { 
    Application["LiveSessionsCount"] = ((int)Application["LiveSessionsCount"]) + 1; 
} 

protected void Session_End() { 
    Application["LiveSessionsCount"] = ((int) Application["LiveSessionsCount"]) - 1; 
} 

Et quand il est temps de définir votre cookie; vous pouvez accéder à cet objet Application pour récupérer le nombre et l'utiliser pour créer une valeur de cookie différente. Le problème avec cela serait que l'application garde une trace des sessions en cours. Cela augmentera et diminuera au fur et à mesure que les connexions à votre site commenceront et se termineront. Ce que vous pourriez faire serait d'ajouter un second La variable d'application qui a des méthodes similaires dans l'App/Session commence à 0 et incrémente; cependant, n'ajoutez pas dans le décrément de fin de session de cette valeur. Ce serait alors un décompte total des sessions dans le cycle de l'application. Lorsque le site est redémarré, il retournera à 0.

Il existe naturellement d'autres méthodes que vous pouvez utiliser, un des sites avec lesquels je travaille enregistre toutes les connexions dans une base de données et a travaillé de cette façon. Ceci est juste pour vous donner quelques idées sur ce qui peut être fait. Je lisais les liens documentés pour mieux comprendre l'application et les objets de session; ainsi que le cookie de session.

+0

Merci. Je vais considérer et écrire si cela fonctionne. –