4 messaggi dal 07 agosto 2009
In breve: ho un portale sviluppato in Java dal quale richiamo un'applicazione asp.net, passandole via POST un XML contenente i dati dell'utente. Nella Default.aspx, ricevo l'xml, espongo i dati e salvo in sessione. Fin qui tutto ok. Subito sotto ai dati esposti, ho inserito un asp:button e qui sorge il problema: se voglio eseguire un PostBack alla Default.aspx, devo impostare l'action del form a http://localhost/miaapplicazioneaspx/Default.aspx ma così facendo, perdo giustamente i dati salvati in sessione. Se non imposto l'action del form, risponde chiaramente il PORTALE. C'è un modo per ovviare questo inconveniente? E' possibile fare in modo che quando premo il button risponda l'applicazione aspx e non il portale java?


Grazie in anticipo
Michele
micheWeb ha scritto:
devo impostare l'action del form a http://localhost/miaapplicazioneaspx/Default.aspx ma così facendo, perdo giustamente i dati salvati in sessione.


non ti seguo. perchè perderesti i dati in sessione? riesci a spiegarti un filo meglio? grazie.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
4 messaggi dal 07 agosto 2009
L'intento è quello di partire col browser da una applicazione Java Web a 2 frame (uno di destra ed uno di sinistra), e all'occorrenza gestire un'applicazione aspx sul frame di destra.

1)
Il browser inizialmente apre una pagina a frame (destra e sinistra) su un websphere.

2)
L'utente, cliccando su un link dal frame di sinistra, richiama una servlet con target il frame di destra, la quale fa un redirect verso una applicazione aspx su IIS, che risiede su un altro server.

3)
L'applicazione chiamata dal frame di destra risponde con la default.aspx, e pubblica una semplicissima pagina HTML che contiene un "asp:button". Tale pagina contiene un form senza il parametro "action", ad indicare che un eventuale submit richiami sempre la default.aspx.

4)
Io vorrei che, cliccando su quel "asp:button", l'applicazione aspx faccia un postback, sempre sul frame di destra, ovvero vorrei che venisse richiamata la stessa pagina default.aspx.

Sembrerà strano, ma una volta eseguito il click sul pulsante, sul frame di destra non viene richiamato IIS sulla pagina default.aspx, ma Websphere sulla pagina default.aspx (che ovviamente non esiste).

Grazie.
micheWeb ha scritto:
Sembrerà strano, ma una volta eseguito il click sul pulsante, sul frame di destra non viene richiamato IIS sulla pagina default.aspx, ma Websphere sulla pagina default.aspx (che ovviamente non esiste).


è strano, non sembra, lo è. hai reverse proxy o qualcosa del genere in mezzo? sei su 3.5 SP 1?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
4 messaggi dal 07 agosto 2009
NO... niente reverse proxy;
si, sono su framework 3.5 sp 1

RIASSUMO NUOVAMENTE:
- il portale risponde su http://mio-websphere/portale esponendo una pagina a frame
- clicco in un link sul frame di sinistra e chiamo la servlet "ServletRedirect" la quale fa un sendRedirect verso http://mio-IIS/WebTest/Default.aspx
- risponde la Default.aspx sul frame di destra esponendo un asp:button
- clicco su asp:button e mi aspetto un postback alla Default.aspx; risponde invece il seguente link http://mio-websphere/portale/Default.aspx



POSSIBILE??? Non penso di essere l'unico che sta tentando di caricare un'app asp.net in una pagina con frame su java?
micheWeb wrote:

- clicco in un link sul frame di sinistra e chiamo la servlet "ServletRedirect" la quale fa un sendRedirect verso
http://mio-IIS/WebTest/Default.aspx

siccome non uso Java, non ho la più pallida idea di cosa faccia questo metodo (suppongo), potresti spiegarlo? fa un HTTP redirect o una richiesta remota?
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
2 messaggi dal 17 agosto 2009

siccome non uso Java, non ho la più pallida idea di cosa faccia questo metodo (suppongo), potresti spiegarlo? fa un HTTP redirect o una richiesta remota?


Ciao, sono un collega di micheWeb e mi collego all'argomento.
Il nostro caso è "HTTP request", e penso che Java non c'entri nulla.
Secondo me il problema è legato al protocollo HTTP, anche se non sono un esperto e non vorrei dire cavolate: vi spiego.

Il browser apre la prima pagina su websphere, che apre una nuova sessione A.
Quindi carica la pagina a frame e successivamente nel frame di destra apre una seconda pagina su IIS che, ricevendo una nuova richiesta, rilascia una sua sessione (chiamiamola B).
Nel momento in cui l'utente clicca sul bottone, il browser, a partire dalla sua prima sessione (cioè su WebSphere), richiama la default.aspx, che non esiste.

Ma aggiungo altro.
Se alla default.aspx esplicito il corretto percorso nel parametro "action" succede una cosa che conferma quanto dico: in questo caso in corrispondenza del click, la pagina richiesta diventa quella corretta (quella specificata nell'action), ma IIS non mi ridà la sessione B, e me ne da una terza (chiamiamola C). Quasi come se a presentarsi a IIS fosse un browser diverso.

Che ne dite?
Vi è un po' pià chiaro il problema.
Noi non sappiamo dove sbattere la testa :-(

Ciao e grazie.
mrighetti wrote:
Che ne dite?

che è ovvio che sono due sessioni diverse, perchè la prima chiamata non la fa il browser, la fa il server attraverso l'applicazione Java. di fatto la prima volta la pagina è richiesta dal server, che non conserva il cookie di sessione. ed anche se lo conservasse non saprebbe cosa farsene, visto che la seconda chiamata la fa il client. ed è ovvio, come sospettavo, che mettendo esplicitamente l'action nella form poi funzioni, ed omettendolo invece il post venga fatto sulla pagina Java, che è di fatto per il browser quella che viene visualizzata.
la soluzione è semplice: niente web request ma un sano HTTP redirect con status code 301.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.