UrlReferrer Asp.net e Global.asax

giovedì 26 febbraio 2015 - 15.49
Tag Elenco Tags  VB.NET  |  .NET 4.0

86Marco Profilo | Expert

Buon pomeriggio amici,
per una mia applicazione in asp.net, sto creando un piccolo pannellino per delle statistiche.

Ora, mi servirebbe trovare il modo di reperire l'url da cui proviene il visitatore tramite Request.UrlReferrer.

Per poter ovviare a questo ho cercato di intercettare il valore dell'HTTP Referrer dentro il file global.asax nell'evento application_start.

Purtroppo però ricevo l'errore che "non è disponibile in questo contesto".

Posso sapere come ovviare a tale problema?

Grazie a tutti.

andrestu Profilo | Expert

un pò di esempi e un link non so se ti può essere utile


http://msdn.microsoft.com/en-us/library/ms178116%28v=vs.80%29.aspx



Request.ServerVariables["HTTP_REFERER"]
Request.ServerVariables["PATH_INFO"]
Request.ServerVariables["URL"]
Request.ApplicationPath
Request.AppRelativeCurrentExecutionFilePath
Request.FilePath
Request.Path
Request.PathInfo
Request.PhysicalApplicationPath
Request.PhysicalPath
Page.AppRelativeTemplateSourceDirectory
Page.AppRelativeVirtualPath












Andrea Restucci - Web Developer

86Marco Profilo | Expert

Ciao Andrea,
forse sono stato poco felice nell'esposizione.

Mi è chiaro il concetto dell'utilizzo delle variabili server, il problema è che non riesco ad implementarlo sul global asax :(

andrestu Profilo | Expert

perchè? sicuramente tra gli esempi che ti ho riportato ci sarà qualche "valore non impostato" in application start ma sono certo che ce ne sono alcuni che puoi usare, li ho usati personalmente ora non ricordo quali...
non capisco quale sia il tuo problema

Andrea Restucci - Web Developer

86Marco Profilo | Expert

Ciao Andrea,
cerco di spiegarmi meglio.

Per facilitare le cose ho creato un piccolo DB con una tabella "news" e due campi 'DataAccessi' ed 'Origine' ed una piccola procedura che dovrebbe salvarmi i due parametri nel DB.

Tramite la sub InsertReferrer vorrei intercettare l'url.referrer e salvarlo nel db.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Alla sua esecuzione mi esce fuori:

727x205 16Kb


Come posso ovviare?

andrestu Profilo | Expert

be gli hai passato il parametro non valorizzato è normale

Andrea Restucci - Web Developer

86Marco Profilo | Expert

Ciao Andrea,
scusami ma ho fatto un po' di confusione, l'immagine dell'errore non è l'errore che ricevo e per il quale scrivo il presente thread.

Inserisco la sub InsertReferrer (vedi codice precedente) dentro Application_Start e ricevo l'errore: "Url.Referrer non disponibile in questo contesto".
Ora pensandoci un attimo e documentandomi su MSDN è quasi ovvio, poiché su Application_Start ancora non è stata fatta alcuna richiesta HTTP quindi il motore asp.net non ha che rispondermi...

Ma allora chiedo, come posso ovviare per poter far partire il codice per la memorizzazione dell'url.referrer quando qualsiasi pagina del sito web viene chiamata e caricata.

Questo chiedevo, scusa se sono stato poco chiaro, della risposta di prima tieni presente solo il codice.

Ciao e grazie, intanto mi documento ancora un po'.

andrestu Profilo | Expert

ripeto:
nei post precedenti ti ho dato una lista di possibilità per recuperare le il path in modo diverso, alcune è probabile che in application_start non funzionano ma altre sono sicuramente funzionanti, ora non ricordo quali, inseriscile tutte e fai il debug e vedi quali sono valorizzate e quali possono andarti bene...

operò forse devi usare questo evento che viene chiamato ad ogni richiesta
Application_BeginRequest

86Marco Profilo | Expert

Ciao Andrea,
credo infatti che su application_start, non funzionino... ma seguo il tuo consiglio, provo e ti faccio sapere.

Grazie

andrestu Profilo | Expert

e comunque che una differenza funzionale, Application_Start dovrebbe partire solo con l'avvio dell'applicazione invece Application_BeginRequest parte ad ogni richiesta...

Andrea Restucci - Web Developer

86Marco Profilo | Expert

Esattamente... non dovrebbe, è proprio così! ;)

Ti faccio sapere, grazie

andrestu Profilo | Expert

si scusa avevo dimenticato di specificarlo

Andrea Restucci - Web Developer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5