2012-09-22 14 views
6

Ho un errore di registrazione del sito utilizzando Elmah.SqlErrorLog. Il mio obiettivo di avere un altro sito contiene i gestori che servono le pagine che si vedono in genere in localhost/elmah.axd. Il motivo è che il sito che registra gli errori utilizza l'autenticazione Forms, mentre io voglio limitare chi può vedere i registri tramite l'autenticazione di Windows.ELMAH applicationName: mostra le eccezioni registrate da un altro sito

Il sito che esegue la registrazione è in esecuzione sulla porta 80 e il sito per la visualizzazione dei registri si trova sulla porta 8008. Inizialmente, non sono stato possibile visualizzare eccezioni dal sito di registrazione. Poi ho trovato questa risposta, che spiega che è possibile impostare applicationName per il tuo errorLog: Separate viewer application for ELMAH's log

Ho cercato nella tabella a cui ELMAH accede, e ho scoperto che prima del mio tentativo di separare la registrazione/visualizzazione in due siti diversi, è stato registrato "/ LM/W3SVC/3/ROOT" nella colonna Applicazione.

Dopo aver specificato applicationName = "/ LM/W3SVC/3/ROOT", ha funzionato! Sfortunatamente, questo valore varia da macchina a macchina, il che non funzionerà correttamente quando la casella di sviluppo del ragazzo successivo avrà un nome applicazione di "/ LM/W3SVC/10/ROOT". In base a ciò, tale stringa ha a che fare con lo spazio dei nomi macchina locale: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/44a57859-8fbb-4238-a7b5-f10c34cf8fe8.mspx?mfr=true

Come posso ottenere il sito sulla porta 8008 che serve per visualizzare i log per visualizzare le eccezioni registrate dal sito sulla porta 80?

risposta

10

Dopo aver impostato esplicitamente l'applicationName, questo è il nome che deve essere utilizzato quando registra l'eccezione nel database.

Se si imposta applicationName = "Foo" nella configurazione per entrambi i siti, nuove eccezioni registrati sul sito sulla porta 80 dovrebbe essere visibile al sito sulla porta 8008

Se avete bisogno di fare i vecchi errori visibili che sono state registrate prima di questa modifica, è possibile aggiornare il campo di applicazione della tabella ELMAH_Error essere 'Foo' così

EDIT

il valore applicationName è impostato come attributo sull'elemento ERRORLOG nel web.config

<elmah> 
     <security allowRemoteAccess="false" /> 
     <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" applicationName="Foo" /> 
    </elmah> 
+0

Suppongo che si intenda impostare applicationName nel web.config. Dove dovrebbe andare? I risultati di Google che vedo sono relativi alla sezione . È corretto? http://weblogs.asp.net/scottgu/archive/2006/04/22/Always-set-the-_2200_applicationName_2200_-property-when-configuring-ASP.NET-2.0-Membership-and-other-Providers.aspx – BenWillkommen

+0

Ho aggiornato la risposta per includere un esempio: dovresti avere una sezione elmah nel tuo web.config - l'applicationName viene impostato nella sezione errorLog all'interno di –

Problemi correlati