2010-12-11 4 views
0

Ich habe mehrere ASP.NET-Sites, gehostet auf der gleichen Domäne (verschiedene Subdomains) und arbeiten über HTTPS.Interaktionsproblem zwischen WCF-Dienst und ASP.NET-Sites mit Session ohne Cookies, verschiedene Subdomains

Ich habe WCF-Dienst, gehostet auf der gleichen Domäne.

Ich habe einen separaten State Server für Sitzungen.

Alle Standorte cookieless Sitzung verwenden (wenn jemand fragt, warum - ich später antworten, aber es ist ein ‚Muss‘)

Auf meinen Seiten verwende ich Grid-Komponenten von Telerik (aber eigentlich spielt es keine Rolle), dass Nach Daten vom WCF-Dienst fragen und diese Daten angeben

Die Probleme sind:

1) Ich kann nicht POST-Anforderung an WCF-Dienst von Javascript machen verwalten: aus irgendeinem Grund ist es immer entweder GET oder OPTIONS (egal ob ich Sys.Net.WebServiceProxy aufrufen oder einfach nur eine einfache jQuery AJAX Anfrage). Es passiert sogar, wenn ich den COOKIE-Modus anzeige, nicht cookielos. Vielleicht bekomme ich deswegen "405 Method not allowed" Fehler - WCF ist für POST-Anfrage eingestellt, aber die Seite sendet GET ...

2) Ich kann SESSION nicht von meinen Webseiten abrufen! Ich habe Ansatz versucht, den ich gefunden habe, aber WCF verwendet immer OWN-Sitzung, anstatt sich mit vorhandener ASP.NET-Sitzung zu verbinden, trotz ASP.NET-Kompatibilitätsmodus. Ich brauche SESSION von Daten zwischen Standorten und WCF-Dienst auszutauschen

3) Ich Idee nicht habe derzeit, wie die Sicherheit zu verwalten, wenn Daten zwischen Erwähnten Austausch im Lichte der oben genannten Probleme ...

4) Ich weiß nicht genau, wie web.config für WCF-Service in meinem Fall aussehen sollte, weil ich Tonnen von verschiedenen Varianten gesehen habe, aber alle für einige einfache Fälle.

Würde wirklich für die Hilfe geschätzt werden! Ich bin schon seit 2 oder 3 Wochen fest, weit hinter dem Plan, aber nichts funktioniert noch ... Ich kann sehen, dass es einige Informationen über ähnliche Probleme gibt, aber ich habe Angst, etwas Kleines zu verpassen - im Web. Config oder Methode Attribut oder IIS-Einstellung, etc - und f ... bis alles.

Zu viele Probleme und zu wenig Zeit für Experimente :(

Antwort

0

Nun, zum einen: WCF ist nicht ASP.NET - so also Sie kann nicht Aktien Sitzungsstatus zwischen ASP.NET-Websites und WCF zu tun eine ganze Menge Informationen über das, was Sie versuchen,

Sie bieten keine.

Wenn Sie irgendetwas zwischen den beiden Welten teilen müssen, sollte es auf beiden Seiten.

zugreifen können in einer Datenbank gespeichert werden ... kannst du uns erklären, was diese WCF ist rvice sollte (oder zeigen Sie uns den WCF-Service-Vertrag)? Außerdem - Was sind die Voraussetzungen für den Aufruf dieses Dienstes? Sie sprechen über POST-Anfragen ... versuchen Sie, einen REST-fähigen Service zu erstellen, der aus Javascript aufgerufen wird?

Update: während es stimmt, dass WCF nicht ASP.NET ist, und die beiden im Grunde nicht die gleichen Mechanismen für Sitzungsstatus usw. verwenden, scheint es möglich zu sein, WCF-Dienste zu konfigurieren (wenn in IIS gehostet)) um auf den ASP.NET-Sitzungsstatus zugreifen zu können.

Siehe Wenlong Dongs Blogpost auf Using ASP.NET sessions from WCF.aber aus seiner Blog-Post, sehe ich nicht, ob dies in einer cookieless Umgebung arbeiten, .....

+0

Danke verwenden die Dinge, für die Klärung ein bisschen! Über was ich versuche zu tun. Nun, wir haben eine riesige Unternehmens-Website mit Hunderten von Entitäten. Die meisten dieser Entitäten werden mit Gittern dargestellt (Liste der Entitäten, ihrer Ereignisse, etc.). Es können insgesamt zehntausende Datensätze pro Ansicht mit Link zu detaillierten Informationen, Ajax-Popups usw. sein. Natürlich verwenden wir Paging :) Wir verwenden Microsoft Enterprise Library und folgen Sie deren Regel mit DataBase Provider, Controller und Entity. Das ist unsere Geschäftslogik. Also hatten wir eine Objektdatenquelle, die Entity an das Grid bindet. Und arbeiten "serverseitig". – Alexander

+0

Jetzt entschieden wir uns, clientseitige Bindung und Dienste zu verwenden, Filterung, keine Postbacks, kein Seiten-Reload (Ajax-Panels sind nicht sehr zuverlässig, deshalb würden wir es vorziehen, sie nicht zu verwenden). So - clientseitig sendet die Anfrage an den WCF-Dienst mit einigen Rasterparametern (Startzeile, Zeilennummer usw.) und der WCF-Dienst sollte eine Antwort senden, um das Raster zu füllen. – Alexander

+0

Wirklich, es funktionierte irgendwie schon, aber dann schien es, dass es auch gut wäre, die Sitzung von Websites für den WCF-Dienst zu teilen, um dort einige Daten zu speichern (in einigen Fällen werden wir dies wahrscheinlich brauchen, aber wenn es sicher ist nicht möglich ohne einige ernsthafte Sachen, wie Speichern von Sitzung in der Datenbank - langsam, dann ...) – Alexander

0

ich mit beweglichen WCF-Dienst unter Web gelandet, so einen WCF-Dienst PER Website hat