2010-05-27 5 views
5

Unser Kunde hat eine Anforderung, die Funktionalität ihrer bestehenden großen Regierungsprojekt zu erweitern. Es ist ein ASP.NET 3.5-Projekt (vor kurzem von 2.0 aktualisiert).Web-Seite von einer anderen Website in ASP-Seite anzeigen

Die vorhandene Lösung ist ein ziemlich Unhold, der fast nicht zu halten ist, also haben sie entschieden, dass sie die neue Funktionalität bereitstellen möchten, indem sie es auf einer anderen Website hosten, die auf der vorhandenen Website angezeigt wird.

Wie dies am besten zu tun ist, bin ich mir nicht ganz sicher, und wenn es irgendwelche Sicherheitsprobleme gibt, die es verhindern oder die in Betracht gezogen werden müssen.

Im Wesentlichen würde sich der Benutzer wie gewohnt an der vorhandenen Website anmelden und beim Klicken auf einen bestimmten Link würde die Seite wie gewohnt mit einem Frame oder Steuerelement geladen werden, in dem der Inhalt der Seite von der anderen Site enthalten ist . IE. Sie möchten nicht einfach zu der anderen Seite umleiten, die sie in die aktuelle Seite einbetten möchten, so dass die vorhandenen Menüs usw. noch verfügbar sind.

Ich glaube, wenn Informationen an die eingebettete Seite übergeben werden müssten, würde es mit Abfragezeichenfolgen getan werden, da ich nicht sicher bin, ob es noch eine andere Möglichkeit gibt, dies zu erreichen.

Kann mir jemand einige Hinweise geben, wo ich anfangen soll, um diese oder mögliche Fallstricke zu implementieren, die ich beachten sollte.

Dank

+0

Haben Sie sehen authentifiziert werden müssen der Standort? – alejandrobog

+0

wird angenommen, dass sie bereits authentifiziert sind und wir werden eine Art von Prüfung hinzufügen, um sicherzustellen, dass die neue Site nicht direkt aufgerufen werden kann, selbst wenn sie bereits authentifiziert sind. –

+0

iFrame oder Javascript - das sind die einzigen 2 Möglichkeiten, die ich kenne. – RPM1984

Antwort

2

wenn die 2 Seiten aus dem gleichen Netz (niedrige Latenz zwischen ihnen gehostet werden) Sie könnten den Statusserver für die Sitzungsverwaltung verwenden. Auf diese Weise authentifizieren Sie sich bei der Authentifizierung auf einer Site auch gegenseitig und teilen den Benutzerstatus über sie hinweg.

sein ziemlich einfach, in Ihrem Web-Config von jedem Web-Server, den Sie auf den Zustand Server verweisen würden

<configuration> 
    <system.web> 
    <sessionState mode="StateServer" 
     stateConnectionString="192.168.1.103:42424" 
    /> 
    </system.web> 
</configuration> 

http://en.csharp-online.net/ASP.NET_State_Management%E2%80%94Storing_Session_State_out_of_Process

1

erstellen virtuelles Verzeichnis unter der primären Domäne. Wenn Ihre Domain www.mydomain.com lautet, erstellen Sie ein virtuelles Verzeichnis www.mydomain.com/site und portieren Sie die neue Websiteanwendung unter/site virtual directory. Diese Verknüpfung sollte sehr relevant werden. Damit behält die Anwendung für virtuelle Verzeichnisse auch alle von der primären Domäne festgelegten Domänen-Cookies bei.

+0

Ich bin mir nicht sicher, ob das meine Frage beantwortet. Ich war eher damit beschäftigt, eine Seite innerhalb einer anderen Seite anzuzeigen und mindestens eine Abfragezeichenfolge an die eingebettete Seite zu übergeben. Auch was meinst du mit deinem letzten Satz? Danke –

1

Ich würde vorschlagen, die zweite Website genauso aussehen zu lassen wie die erste oder zumindest die gleiche MasterPage verwenden, damit Sie von einer Seite zur nächsten ohne visuelle Unterschiede umleiten können.

Wenn Ihre Site authentifiziert werden muss, beachten Sie, dass Sie etwas tun müssen, um zu verhindern, dass sich der Benutzer zweimal anmeldet. Eine Option könnte sein, ein verschlüsseltes Token an die zweite Site zu senden.

All dies, wenn Sie gezwungen sind, eine zweite Seite zu haben, wenn nicht nur ein virtuelles Verzeichnis verwenden

0

Ich würde einen iFrame verwenden Sie diese Website in in Ihrer vorhandenen Anwendung einbetten. Setzen Sie einfach das "src" -Attribut und übergeben Sie alle Abfragezeichenfolgenparameter, die die andere Site korrekt rendern muss.

Sie noch in sensible Daten in dem Query-String übergeben können, es würde aber sicherstellen, dass es verschlüsseln, bevor sie in dem Senden.

Ich weiß, dass es nicht die eleganteste Lösung, aber es wird die ausgeführte Arbeit. Und aus der Beschreibung der bestehenden App, es scheint nicht, wie Ihr Kunde für „Eleganz“ kümmert :)

hoffte, das hilft

0

Sie könnten (die auf einem des Web-Servers gefunden werden können) benutze etwas wie UFrame. Ich habe es ein paar Mal verwendet, und scheint damit recht gute Arbeit zu tun ...

„Güte von Update und IFRAME kombiniert“

http://www.codeproject.com/KB/aspnet/uframe.aspx