2008-09-15 3 views
0

Ich habe eine Anwendung, die als untergeordnete Anwendung in einem virtuellen Verzeichnis ausgeführt wird.Übergeben von Daten zwischen einer übergeordneten App und einem virtuellen Verzeichnis

Ich mag einen Wert aus der übergeordneten Anwendung zu übergeben, aber ich glaube, dass Session pro Anwendung verkeilt ist, und wird nicht funktionieren.

Um die Dinge zu komplizieren, ist die übergeordnete Anwendung WebForms, während das Kind NVelocity MVC ist.

Kennt jemand einen Trick, der mir erlaubt, eine Art Session-Funktionalität zwischen virtuellen Anwendungen zu verwenden?

EDIT: Ein Webservice ist nicht wirklich das, was ich im Sinn hatte, alles, was ich tun müssen, ist die eingeloggten Kunden übergeben Benutzername für das Kind App. Außerdem, wenn ich einen Webservice auf dem Elternserver anrufe, bekomme ich nicht dieselbe Sitzung, also weiß ich nicht, welcher Benutzer.

Antwort

1

Klingt wie Web-Service ist der Weg zu gehen. Sie könnten etwas wie das Folgende tun:

  • Lassen Sie die WebForms App einige Daten in ihrer Datenbank mit einem bestimmten Schlüssel erstellen.
  • Übergeben Sie diesen Schlüssel in der URL an die NVelocity MVC-Anwendung.
  • Erlauben Sie der NVMVC-Anwendung, einen Webdienst (REST, XML-RPC, SOAP, was auch immer) in der WebForms-App mit dem Schlüssel aufzurufen, der übergeben wurde.
  • Dies wird um jede Art von Session Keying oder Cookie-Domain-Problem, das Sie haben können und um Ihnen einige schön strukturierte Daten zu ermöglichen.

    0

    Sie können einen serverseitigen HTTP-Request tun, es so etwas wie dies in C# aussieht:

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("/ASPSession.ASP?SessionVar=" + SessionVarName); 
    req.Headers.Add("Cookie: " + SessionCookieName + "=" + SessionCookieValue); 
    
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
    Stream receiveStream = resp.GetResponseStream(); 
    
    System.Text.Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 
    
    StreamReader readStream = new StreamReader(receiveStream, encode); 
    
    string response = readStream.ReadToEnd(); 
    
    resp.Close(); 
    readStream.Close(); 
    return response; 
    

    Auf der ASP-Seite, ich überprüfe nur, dass der Antrag nur von localhost kommt, XSS-Stil zu verhindern Angriffe, und dann ist die Antwort nur der Wert der Session-Variable.

    das Cookie zu finden, ist leicht genug, um alle Session-Cookies ähnliche Namen haben, so prüfen nur die Cookies Sammlung, bis Sie das entsprechende Cookie finden. Beachten Sie, dass dies nur funktioniert, wenn die Cookies für die gesamte Domain gelten und nicht nur für den Unterordner, auf dem Sie sich befinden.

    0

    Speichern Sie die benötigten Daten auf einem Platz zu teilen, wo beide Anwendungen es abfragen können, mit einem Schlüssel beiden Anwendungen kennen.

    Eine Datenbank ist etwas, das Sie verwenden können, wenn Sie keinen Webdienst möchten.

    0

    ein klassisches ASP-Formular auf Ihrer Seite können Sie mit Post zu übergeben, wählen Sie in den Kinder app mit request.form

    0

    Warum es einfach nicht als ein verschlüsselten Abfrage-String übergeben werden?

    Das Kind App entschlüsseln konnte, validieren, und Bob ist dein Onkel.