2016-02-09 27 views
7

Ho un sito MVC ASP.NET. Quando si verificano errori sul sito, desidero registrare l'eccezione insieme al valore di Request.AnonymousID, per poter rilevare se un utente sta riscontrando 20 errori o 20 utenti che hanno riscontrato lo stesso errore. Di seguito è stato aggiunto al file web.config:AnonymousId è sempre nullo

<system.web> 
    <anonymousIdentification enabled="true" /> 
    ... 
</system.web> 

Durante lo sviluppo in Visual Studio e l'utilizzo di IIS Express, questo funziona come previsto. Tuttavia, quando il sito viene spostato nell'ambiente di test (che esegue IIS 8.5 su Windows Server 2012 R2) il valore di Request.AnonymousID è sempre nullo.

L'autenticazione anonima è stata anche configurata per il sito in IIS. Dopo ogni modifica della configurazione, cerco di riavviare il sito, riciclare il pool di applicazioni e cancellare i cookie nel mio browser: nulla sembra funzionare. Il cookie .ASPXANONYMOUS viene generato, ma l'ID è sempre vuoto quando provo a utilizzarlo nel codice.

Ho anche provato a creare un sito fittizio che mostra solo AnonymousId sulla pagina e funziona nell'ambiente di test, quindi non riesco a capire cosa sto facendo male nel sito reale.

Qualsiasi aiuto sarebbe molto apprezzato.


Edit 1: ho aggiunto quanto segue per Global.asax, al fine di generare un AnonymousId personalizzato:

protected void AnonymousIdentification_Creating(object sender, AnonymousIdentificationEventArgs args) 
{ 
    string id = string.Format("Test-{0}", Guid.NewGuid()); 
    args.AnonymousID = id; 
} 

Ancora una volta, questo funziona sulla mia macchina e il mio manichino posto sul Test- server, ma non nel sito reale.

Il sito è un sito secondario (ad esempio mysite. Dominio.com), se questo fa alcuna differenza. Anche il sito fittizio è un sito secondario, ma qui l'autenticazione anonima ha funzionato "fuori dagli schemi".


Edit 2: Sembra che il AnonymousId non è più nulla sul sito nel Test-ambiente. Ora è popolato con il formato fornito nel eventhandler aggiunto a Global.asax. Quindi, anche se sembra che io abbia impostato correttamente tutto, mi piacerebbe comunque sapere cosa avrebbe potuto impedire all'Id di essere generato. Era un problema di configurazione? Non ho fatto le cose nell'ordine corretto (riavviare il server/riciclare il pool di app, cancellare i cookie, ecc.)?

+0

Entrambi gli ambienti (dev e test) condividono lo stesso hostname? – haim770

+0

@ haim770 Si accede al sito di sviluppo tramite _localhost: 61615_ sulla mia macchina, mentre il sito di prova ha un nome host effettivo. Il sito è un sito secondario (ad esempio ** mysite **. Domain.com) se questo fa alcuna differenza. –

risposta

1

Questo dovrebbe funzionare. Non esiste alcuna correlazione tra il nome host e il cookie ASPXANONYMOUS

Verificare se il modulo di autenticazione anonimo è installato su IIS e a cosa è impostato. Ho visto casi in cui questo modulo non è installato.

+0

Il modulo di autenticazione anonimo è presente in Gestione IIS in "Moduli" per il sito. Questo potrebbe essere un problema di configurazione altrove in IIS? –

+0

Sì. La configurazione di IIS può essere sovrascritta a diversi livelli. Dovrai controllare se la configurazione è stata modificata ovunque –

Problemi correlati