2012-07-26 19 views
53

elmah.mvc nuget paketini yükledim ve o alanın varsayılan yapılandırmasını bir e-posta göndermek ve bir SQL veritabanına takmak üzere ayarladı.Elmah MVC ile üretim sunucusunda/elmah erişemiyor musunuz?

Yerel makinemde, Visual Studio ana bilgisayarını kullandığımda, hatalarımı bildirmek için uygulamanızı açabilir ve/elmah'a erişebilirim. Ancak, üretimde/elmah denemeye çalıştığımda, iki hata alıyorum, önce bir 403 access is denied sunucu hatası alıyorum. Sonra e-postada (ELMAH itibaren) alıyorum:

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

Herkes burada oluyor ve nasıl düzeltmek için ne biliyor musunuz? Teşekkürler.

Denedim aşağıdaki yanıtları tarafından bugüne kadar önerdiği gibi aşağıdaki: ben hem elmah.axd ve basit yolunu ayarlama çalıştı

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

<system.webServer> In And <system.web>

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

yılında ~/elmah. Hepsi hala aynı hatayı veriyor ve hala yerel olarak çalışıyor, ancak üretimde değil.

Düzenleme: Bu, aslında sunucuya erişip, tarayıcıdan (localhost kullanmadan, gerçek site adresini kullanmadan) eriştiğim zaman da çalışır. Öyleyse neye sahip değilim? Sunucu düzeyinde gibi görünüyor.

+0

üretimde ise Ayrıca, bu yazı bakmak isteyecektir: http://stackoverflow.com/ sorular/4416318/nasıl-güvenli-elmah-axd –

+0

Ben sadece localhost ile başka bir yerden erişildiğini kastettiğimi açıklığa kavuşturmalıyım, diğer insanların erişebileceği canlı sunucumuz değil. – SventoryMang

+0

IIS 6 veya 7? IIS içindeki .axd dosyalarına açıkça izin verilen herhangi bir izin var mı? – Josh

cevap

116

Sen web.config dosyasında <elmah> bölümüne aşağıdaki ayarı yapılandırma ekleyerek uzaktan erişim için Elmah etkinleştirmeniz gerekir. Bu değer için varsayılan ayar yanlıştır, yalnızca localhost'a izin verir, bu nedenle neden yerel makinenizde Visual Studio'dan çalışıyordur.

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

Her zaman bu kendimi unutup başımı kaşıma birkaç dakika harcamak gibi görünüyor;)

+3

Sadece bu cevabı bulmak için Googled ve zaten yaptığımı fark ettiğimde onu kışkırtmak üzereydim - muhtemelen son kez Elmah'ı yapılandırmaya çalıştım ve bunu unuttum! Teşekkürler :) –

+2

sadece Jamie Humphries gibi aynı sorunu vardı ... bazı cevaplar çok upvotes –

+0

hak ediyor DOTang dedi gibi system.web içinde şey ekledi ve sonra bu işe yaradı! – GabrielBB

1

HttpHandler'ın web.config dosyanızdaki webServer bölümünde tanımlandığından emin olun.

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

Sistem.webServer'ın sadece bir etiketine sahip olduğundan sisteme aktaracağından emin değilim, ancak bunu her iki yere de koymaya çalıştım ve hem elmah.axd hem de ~/elmah denemeyi denedim. MVC) ve hala çalışmıyor ve hala aynı hatalar var. – SventoryMang

+1

İşleyici için bir yol eklediniz mi? Zaten * .axd istekleri için bir göz ardı rotanız olabilir. – scottm

+0

Bunu nasıl yaparım? Rota için kontrolör/eylem yoktur. Ayrıca evet 'route.IgnoreRoute (" {resource} .axd/{* pathInfo} ") var' 'dır, ancak soru o zaman yerel olarak localhost üzerinde çalışıyor ya da URL’ye (localhost değil) göz atarken çalışıyor) Bu işleyicileri veya yolları eklemeden doğrudan sunucuya? Bu, Elmah.Mvc kullanıyor, bu yüzden bir şey hala çalışmıyor olsa da, MVC'ye bağlamanıza gerek yok. – SventoryMang