8 messaggi dal 07 settembre 2006
Salve a tutti, questo è il mio primo post, anche se seguo da tempo il forum e il sito in generale

Mi trovo a dover gestire una applicazione web multipiattaforma (aspnet e php). Nella fattispecie il codice php si preoccupa di gestire il forum del sito e il codice aspnet tutto il resto (galleria immagini controlli amministratore etc etc).

Ho creato un file in php che mi permette di sapere se l'utente che effettua la richiesta è loggato o meno al forum ed eventualmentemi restituisce l'userid. Il tutto tramite un xml opportunamente formattato (per comodità di lettura chiamo il file islogged.php)

Adesso viene il problema:
- se apro islogged.php attraverso il browser fa il suo dovere tranquillamente (come è giusto che sia).
- se faccio una richiesta Ajax (XmlHttpRequest) tramite una pagina aspx mi viene restituito un risultato corretto
- se invece richiamo il file attraverso il System.Net.HttpRequest il risultato è sfalsato. nella fattispecie mi restituisce sempre non connesso.

Ora la mia domanda è perchè tramite richiesta XmlHttpRequest mi viene restituito il valore corretto e tramite System.Net.HttpRequest mi viene invece restituito l'xml sempre con valori non connesso?

Grazie in anticipo per le risposte.

Marco

P.S.: Ho utilizzato anche entrambi i metodi in una stessa pagina,ma niente.

Non hai veramente capito qualcosa finchè non sei in grado di spiegarla ad un bambino di 6 anni! (A.Einstein)
Il file xml che generi é correttamente validato secondo lo standard ?

Corso SEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
Forex
8 messaggi dal 07 settembre 2006
si, non è un problema di sintassi xml. Il problema risiede nella restituzione del valore. E anche il contenttype della pagina php è corretto.

il problema è che Dal browser o da XmlHttpRequest (Ajax) il valore restituito è quello veritiero. Cioè mi viene restituito l'xml con il capo a valore 0 se non è connesso o con l'userid se è connesso.
Se invece uso la classe dotnet il valore restituito è sempre 0, come se il motore php non riconoscesse la richiesta di provenienza.

Marco

Non hai veramente capito qualcosa finchè non sei in grado di spiegarla ad un bambino di 6 anni! (A.Einstein)
Come richiami l'interrogazione tramite System.Net.HttpRequest ?

Corso SEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
Forex
8 messaggi dal 07 settembre 2006
System.Net.HttpWebRequest request;
System.Net.HttpWebResponse response = null;

request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(
               "http://www.miosito.net/islogged.php"
           );

request.Method = "GET";
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.StreamReader responseReader = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string res = responseReader.ReadToEnd();

Modificato da Mark.net il 08 settembre 2008 09.49 -

Non hai veramente capito qualcosa finchè non sei in grado di spiegarla ad un bambino di 6 anni! (A.Einstein)
Se te provassi ad usare ajax control toolkit per fare questa operazione?
è l'unica idea che mi viene in mente:

Qui lo scarichi:
http://www.asp.net/ajax/ajaxcontroltoolkit/samples/

Qui un esempio di quello che dovresti fare:
http://www.wiziq.com/educational-tutorials/presentation/740-foundation-of-asp-net-ajax

Oppure ti posto il codice che uso io generalmente:
if (!(IsPostBack))

{
  try

    {

        System.Net.HttpWebRequest my;

        Uri targetUri = new Uri("http://tuo_sito");

        my = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create (targetUri);

 

        if ((my.GetResponse().ContentLength > 0))

        {

            System.IO.StreamReader str = new System.IO.StreamReader(my.GetResponse().GetResponseStream());

            Response.Write(str.ReadToEnd());

            if (str != null) str.Close(); 


        }

    }

    catch (System.Net.WebException ex)

    {

        Response.Write("Non esiste nulla.");

    }


}


http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx
Modificato da maltra il 08 settembre 2008 10.01 -
Modificato da maltra il 08 settembre 2008 10.46 -

Corso SEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
Forex
8 messaggi dal 07 settembre 2006
Grazie per il tuo continuo interessamento al mio problema

Il codice che mi hai suggerito è lo stesso che uso io, ma per scrupolo l'ho voluto provare, ma nulla.

considerando che la chiamata Ajax normale funziona l'uso del toolkit non so se miglira le cose, anche perchè il mio intento era quello di creare un HtpModule che si occupava di interfacciarsi alla bisogna con islogged.php.

HO anche provato a fare il tutto con l'oggetto WebRequest e WebClient, ma niente.

Continuo a non capire comunque perchè la richiesta tramite ajax funziona e tramite aspx no

Marco

Non hai veramente capito qualcosa finchè non sei in grado di spiegarla ad un bambino di 6 anni! (A.Einstein)
Mark.net ha scritto:
Continuo a non capire comunque perchè la richiesta tramite ajax funziona e tramite aspx no

La risposta è molto semplice: la chiamata lato client funziona perché viene fatta dal browser dell'utente (che è autenticato in php) mentre quella fatta via System.Net.HttpRequest è fatta ovviamente dal *server*, con le credenziali del server (che dubito sia autenticato  ), senza alcuna relazione o riferimento al client che ha richiesto la pagina aspx.
L'unico modo che mi viene in mente per risolvere è quello di passare esplicitamente le credenziali dell'utente (ad esempio con un ticket in querystring) in modo da slegarsi dalla sessione. Attenzione a come implementi la cosa, anche in funzione del tipo/criticità dei dati che stai trattando (la creazione del ticket deve essere crittata con un algoritmo serio per evitare che un utente malintenzionato possa recuperare i dati degli altri utenti).
HTH

Matteo Casati
GURU4.net

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.