2008-10-22 4 views
0

On m'a demandé si nous pouvions éventuellement "single-instance" notre portail web. Voir this post on Hanselman's blog pour la même idée dans une application WinForms.Comment puis-je "isoler" un portail Web ASP.Net AJAX?

Supposons que nous ayons 2 raccourcis sur la même machine client:

http://MyServer/MyWebPortal/Default.aspx?user=username&document=Foo http://MyServer/MyWebPortal/Default.aspx?user=username&document=Bar

En cliquant sur le premier raccourci lancerait notre portail web, connectez-vous et afficher le document « Foo ». En cliquant sur le deuxième raccourci devrait afficher le document "Barre" dans l'instance en cours d'exécution du portail Web.

Mon approche actuelle est la suivante: Dans le chargement de la page, créez pour la première instance une variable d'application par client. La deuxième instance recherche la variable Application pour voir si le portail est en cours d'exécution sur le client. Si c'est le cas, la deuxième URL est enregistrée dans une autre variable Application et la seconde instance est forcée. J'ai essayé de créer un temporisateur ASP.Net AJAX pour interroger la variable d'application pour un document à afficher. Ce genre de travaux. Afin de répondre rapidement à la deuxième requête, j'ai réglé l'intervalle Timer à 2 secondes. Cela rend le portail irritant à cause des fréquentes publications. En utilisant mon approche, la seconde instance peut-elle indiquer à la première instance de vérifier la variable d'application sans interroger? Y a-t-il une meilleure approche globale de ce problème?

Merci à l'avance

Répondre

2

Il n'y a aucun moyen sur le côté serveur pour contrôler l'instance navigateur page ouvre sur le client. Vous ne pouvez pas forcer toutes les demandes à ouvrir dans la même fenêtre de navigateur.

En outre, une variable de portée d'application est partagée par tous les utilisateurs de votre application. Au moins, faites-en une variable Session-scope - sinon, vous autoriseriez seulement un utilisateur à accéder à votre portail à la fois! Honnêtement, cela ressemble à une requête stupide de quelqu'un qui a) ne comprend probablement pas comment fonctionne ce genre de choses et b) essaie de faire un bout pour les utilisateurs qui ne sont pas si brillants et qui voient un problème avec l'ouverture de plusieurs instances de votre portail.

Questions connexes