c# - elmah: HttpContext के बिना अपवाद?




asp.net exception (3)

मेरे आवेदन के लिए, मैंने इसे सहेजा। Elmah.ErrorSignal.Get । एप्लिकेशन_स्टार्ट में Application_Start Elmah.ErrorSignal.Get ताकि मैं Elmah.ErrorSignal.Get को कॉल कर Elmah.ErrorSignal.Get । सहेजे गए उदाहरण के साथ प्राप्त करें। ErrorSignal साथ, मैं फिर उठा सकता था। यह सभी ईमेल फ़िल्टर के माध्यम से चला जाता है।

नीचे कोड है। मैं FluentScheduler का उपयोग करने के लिए

public class Global : HttpApplication {
    void Application_Start(object sender, EventArgs e) {

        var application = Context.ApplicationInstance;
        FluentScheduler.TaskManager.UnobservedTaskException +=
            (FluentScheduler.Model.TaskExceptionInformation i, UnhandledExceptionEventArgs a) =>
                Elmah.ErrorSignal.Get(application).Raise(i.Task.Exception);

    }
}

मैं Application_Start पर एक थ्रेड उत्पन्न करता हूं और अपवाद लॉग करना चाहता हूं। कोई Context/HttpContext/HttpContext.Current , तो मैं इसे लॉग इन करने के लिए कैसे प्राप्त कर सकता हूं?

फिलहाल, यह मेरे धागे में कोई अपवाद नहीं पकड़ता है और यदि मैं ErrorSignal.FromCurrentContext().Raise(ex); लिखता ErrorSignal.FromCurrentContext().Raise(ex); मुझे संदर्भ के बारे में एक त्रुटि मिलती है शून्य नहीं हो सकती है।

शायद मैं एक डमी HttpContext बना सकता हूं लेकिन किसी भी तरह से मुझे नहीं लगता कि यह अच्छी तरह से काम करेगा।

-edit- मैंने ErrorSignal.Get(new HttpApplication()).Raise(ex); की कोशिश की ErrorSignal.Get(new HttpApplication()).Raise(ex); और ऐसा लगता है कि यह अपवाद नहीं है।


मैं ब्रेंडन केरी के जवाब में <errorLog> का उपयोग नहीं कर रहा था क्योंकि मैं केवल मेमोरी लॉगिंग में था। फिर भी, उसके आदेश ने आवेदन के नाम दिए बिना मेरे मामले में बहुत अच्छा काम किया:

Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("The application has done something.")));

System.Web.Abstractions 3.5.0.0 की आवश्यकता के बारे में त्रुटि के कारण मुझे DET को .NET 4.0 के साथ एल्मा को दोबारा बनाना होगा। मेरा संकलित-for-.NET 4.0 कांटा यहां है अगर कोई इसे चाहता है (भी मजबूत नामकरण):

http://code.google.com/r/scottstafford-elmah/


सुनिश्चित करें कि आप अपना आवेदन नाम web.config में सेट करें

<errorLog type="Elmah.SqlErrorLog, Elmah" 
          connectionStringName="nibWeb" 
          applicationName="Nib.Services" />

और फिर

ErrorLog.GetDefault(null).Log(new Error(error));

काम करेगा





httpcontext