2012-07-26 17 views
53

Ho installato il pacchetto NuGet elmah.mvc e ha mantenuto la configurazione di default di quel sans impostare l'invio di una e-mail e di inserirlo in un database SQL.Impossibile accedere/elmah sul server di produzione con Elmah MVC?

sulla mia macchina locale quando uso lo Studio ospite visiva, posso aprire la mia app e l'accesso/ELMAH multa per vedere un report degli errori. Tuttavia, quando provo ad accedere a/elmah in produzione, ottengo due errori, prima ricevo un errore del server 403 access is denied. Poi nella mia email (da elmah) ottengo:

System.Web.HttpException: Server cannot set status after HTTP headers have been sent. 

Qualcuno sa cosa sta succedendo qui e come risolvere? Grazie.

Ho provato quanto segue per quanto suggerito dalle risposte qui sotto:

In <system.webServer>

<handlers> 
    <add name="elmah" verb="GET" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> 
</handlers> 

E in <system.web>

<httpHandlers> 
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
</httpHandlers> 

ho provato a fissare il percorso sia elmah.axd e semplicemente ~/elmah. Tutti danno ancora lo stesso errore e funzionano ancora localmente, ma non in produzione.

Modifica: In realtà funziona anche quando remoto nel server e accedervi tramite browser (non utilizzando localhost, ma l'indirizzo del sito reale). Quindi quale permesso non sto avendo? Sembra che sia a livello di server.

+0

Si vuole anche guardare questo post se siete in produzione: http://stackoverflow.com/ domande/4416318/how-to-secure-elmah-axd –

+0

Immagino che dovrei chiarire che intendevo solo quando ho accesso da qualche parte oltre che tramite localhost, non è necessariamente il nostro server live a cui altre persone possono accedere. – SventoryMang

+0

IIS 6 o 7? Qualche autorizzazione esplicitamente impostata su file .axd all'interno di IIS? – Josh

risposta

116

È necessario abilitare i Elmah per l'accesso remoto con l'aggiunta di impostazione alla sezione <elmah> nel file web.config la seguente configurazione. L'impostazione predefinita per questo valore è false, che consente solo localhost, quindi perché sta lavorando sulla macchina locale da Visual Studio.

<elmah> 
     <security allowRemoteAccess="true"/> 
    </elmah> 

mi sembra sempre di dimenticare questo me stesso e trascorrere qualche minuto graffiare la mia testa;)

+3

Basta cercare su Google questa risposta e stavo per svaligiarlo quando ho capito che l'ho già fatto - presumibilmente l'ultima volta che ho provato a configurare Elmah e ho dimenticato questo! Grazie :) –

+2

ha appena avuto lo stesso problema di Jamie Humphries ... alcune risposte meritano più upvotes –

+0

Ho aggiunto la cosa in system.web come DOTang ha detto e poi questo e ha funzionato! – GabrielBB

1

Assicurarsi di HttpHandler è definito nella sezione di Webserver nel file web.config.

<system.webServer> 
    <httpHandlers> 
    <add name="elmah" verb="GET" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> 
    </httpHandlers> 
</system.webServer> 
+0

Beh io non sono sicuro se si intende mettere che in system.web perché system.webServer ha solo un tag , ma ho provato a mettere questo in entrambi i posti e anche cercando sia elmah.axd e ~/ELMAH nel percorso (dal è MVC) e ancora non funziona e ha ancora gli stessi errori. – SventoryMang

+1

Hai aggiunto un percorso per il gestore? Potresti già avere una route ignora e richieste * .axd. – scottm

+0

Come potrei farlo? Non c'è controller/azione per il percorso. Inoltre sì ho route.IgnoreRoute ("{resource} .axd/{* pathInfo}"); 'ma la domanda sarebbe allora, perché funziona localmente su localhost, o anche quando si naviga verso l'URL (non localhost) direttamente sul server senza aggiungere questi gestori o percorsi? Questo sta usando Elmah.Mvc, quindi un sacco di rigging personalizzato (che sembra essere quello che hai suggerito in base agli articoli che ho visto) per collegarlo a MVC non è necessario ... anche se qualcosa non funziona ancora. – SventoryMang

Problemi correlati