54 messaggi dal 15 novembre 2003
All'interno di una pagina Asp.Net ho l'esigenza di fare chiamate ad altro sito (in Classic Asp ma poco importa).

In un primo momento ad ogni chiamata HttpWebRequest il sito mi apriva una nuova sessione, successivamente creando un CookieContainer e usando lo stesso per ogni HttpWebRequest fatta il problema si è risolto e viene utilizzata la stessa session

this.Cookies = new CookieContainer();
.....
request.CookieContainer = this.Cookies;

Il problema successivo è utilizzare la stessa session del mio browser, mi spiego una volta fatte queste chiamate HttpWebRequest io farò un redirect al sito che ho invocato con HttpWebRequest e voglio che la session sia la stessa delle chiamate HttpWebRequest.

In fase di sviluppo "in locale" avevo risolto, nella pagina aspx mettevo:
<script type="text/javascript" src="http://localhost:88"></script>
questa riga al caricamento della pagina apriva un session su http://localhost:88, nella pagina Asp.Net tramite Page.Request.Cookies mi recuperavo il cookie della sessione lo aggiungevo a this.Cookies prima di fare le HttpWebRequest e tutto funzionava correttamente.

Quando ho provato variando la chiamata e facendola a http://mioSitoClassicAsp.com non potendo recuperare il cookie in quanto di altro dominio sono tornato al punto precedente e cioè le HttpWebRequest hanno una sessione diversa da quella del browser.

Qualcuno mi sa suggerire il modo per risolvere o aggirare il problema?

Tenete presente che io nel sito in ClassicAsp posso tranquillamente aggiungere e modificare pagine ma non posso modificare il dominio

Grazie.

--
Claudio P.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Claudio,

cldparisi ha scritto:

io farò un redirect al sito che ho invocato con HttpWebRequest e voglio che la session sia la stessa delle chiamate HttpWebRequest.

Non è possibile perché non puoi "convincere" il browser dell'utente ad accettare un cookie emesso per un altro dominio.
Nel caso di localhost funzionava perché il nome host era esattamente lo stesso e potrebbe funzionare anche se le due applicazioni fossero su due terzi livelli dello stesso nome a dominio (Es. se quella a cui fai le chiamate con HttpWebRequest avesse app1.nomedominio.com e il sito chiamato fosse ospitato su www.nomedominio.com).

Tuttavia, potresti risolvere con questo stratagemma, vedi tu se è applicabile nel tuo caso:
Quando reindirizzi al sito chiamato, passagli l'id di sessione via querystring, in modo che il sito sappia qual era l'id usato e possa emettere lui stesso il cookie. Emettilo con lo stesso nome con cui lo emetterebbe ASP classico all'avvio della sessione. Non ho mai provato a farlo ma potrebbe funzionare.

ciao,
Moreno

Enjoy learning and just keep making
54 messaggi dal 15 novembre 2003
Alla fine sono riuscito a risolvere, o meglio ho fatto in altro modo ma comunque il problema non ci sarebbe stato perché la situazione in cui mi trovo ad operare NON è di dominio differente ma stesso dominio e sottodominio differente:

vecchiosito.dominio.com
nuovosito.dominio.com

quindi funziona recuperando e settando il cookie

Grazie

--
Claudio P.

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.