Frage

Das Szenario: Ich habe eine PRISM Anwendung in Silverlight entwickelt (4), und ich bin eine ASP.NET Server-Seite Anwendung auf Host mehrere Web-Dienste (die wiederum WCF-Dienste zugreift, aber das ist nicht wirklich wichtig, hier). Die Silverlight-Anwendung muss in der Lage sein, die Web-Services-Kreuz Domain zu nennen (was bedeutet, dass der Web-Service nicht unbedingt auf dem gleichen Server ist die Silverlight-Anwendung-Hosting).

Die Silverlight-Anwendung besteht aus mehreren Modulen, die jeweils die ASP.NET Web-Dienste zugreifen.

Ich habe nicht viel Erfahrung mit Silverlight und PRISM, aber soweit ich sehen kann, ist dies nicht ein sehr ungewöhnliches Szenario ...

Das Problem: Meine Herausforderung ist, dass, wenn zwei verschiedene Module, die Web-Services zugreifen, bekomme ich 2 neue Sitzungen auf dem Web-Server. Ich hätte gedacht, dass da beide Module auf der gleichen HTML-Seite leben (und dann auch in der gleichen Browser-Sitzung), würden sie die gleiche Sitzung auf dem Web-Server bekommen ...?

Ich habe versucht, den Web-Service-Proxy-Client weltweit verfügbar in dem Behälter (mit Unity) zu machen, indem Sie eine Instanz Registrierung (mit Container.RegisterInstance) und dann immer diese Instanz, wenn ein Modul benötigt eine machen web- Service-Aufruf (mit Container.Resolve), aber dies zu Hilfe scheint nicht.

jedoch alle innerhalb des gleichen Moduls Anrufe bekommt immer die gleiche Sitzung auf dem Server.

Kann jemand sehen, was ich bin fehlt hier ...?

Danke!

Jon

War es hilfreich?

Lösung

Sieht aus wie ich fand meine eigene Antwort.

Das Problem war, dass meine Bewerbung feuert mehr Web-Service-Anrufe beim Start (die verschiedenen PRISM-Module arbeiten unabhängig). Und wenn mehrere Anrufe vor irgendwelchen Antworten aus dem Web-Server, keine Sitzung (und somit keine „ASP.NET_SessionId“ Cookie wurde zur Verfügung gestellt) gegeben wurde, hergestellt wurden zurück an den Client, bevor nachfolgende Anrufe gemacht wurden.

war meine Lösung sicher, dass ich make ein Anruf (async wie immer) zu machen, zum Beispiel zu einem einfachen Ping-wie Web-Service, dann alle anderen Anrufe, bis diese an den Web-Server hält Antwort ist zurück. Dann werden alle nachfolgenden Anrufe der gleichen Sitzung auf dem Server gegeben (weil sie jetzt alle „ASP.NET_SessionId“ Cookie im Header enthalten).

In pratice wird dieser Anruf von der PRISM-Schale hergestellt, und es werden keine Module geladen sind beeing, bevor ich die reponse erhalten. Dann bin ich absolut sicher, dass keiner der anderen Module erhält trigger-happy, bevor ich einen Session-Zustand auf der Hand.

Dennoch, wenn jemand irgendwelche anderen Probleme mit dieser Lösung sieht, ich bin mehr als glücklich, von Ihnen zu hören.

Danke!

Jon

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top