2012-10-19 33 views
8

क्या एएसपी.NET वेब एपीआई में किए गए हर HTTP अनुरोध को लॉग करना संभव है, भले ही अनुरोध विकृत हो, या किसी अन्य कारण से नियंत्रकों में से किसी एक को रूट करने में विफल रहता है।मैं एएसपी.नेट वेब एपीआई में कच्चे HTTP अनुरोध को कैसे लॉग करूं चाहे वह नियंत्रक के लिए मार्ग हो या नहीं?

उदाहरण के लिए, यदि POST विधि में पैरामीटर के रूप में ऑर्डर मॉडल है, तो एक गलत अनुरोध इसे नियंत्रक की POST विधि तक पहुंचने से रोक देगा। मैं किसी को सतर्क करना चाहता हूं ताकि भावी असफलताओं को रोकने के लिए कार्रवाई की जा सके।

क्या इन अनुरोधों को नियंत्रक से आगे अपस्ट्रीम कैप्चर करने का कोई तरीका है?

उत्तर

3

या तो ट्रेसिंग उपयोग करते हैं, आप ITraceWriter को लागू करने के रूप में

http://www.asp.net/web-api/overview/testing-and-debugging/tracing-in-aspnet-web-api

या लागू संदेश संचालकों नीचे दिखाया गया

http://www.strathweb.com/2012/05/implementing-message-handlers-to-track-your-asp-net-web-api-usage/

http://www.asp.net/web-api/overview/working-with-http/http-message-handlers

संदेश संचालकों आप संदेश को बदलने की अनुमति की जरूरत है इससे पहले कि यह HttpControllerDispatcher की बात आती है, और इसलिए आप रूटिंग और एक्शन विधि चयन के साथ सामान्य समस्याओं को संभाल सकते हैं।

लेकिन आखिरी बार ऐपफैब्रिक लॉगिंग का उपयोग करने में संकोच नहीं करते हैं, जब आप आईआईएस पर होस्टिंग करते हैं, क्योंकि यह आपके वेब एप्लिकेशन पर अनुरोध करने से पहले कुछ गलत होने पर आपको जानकारी दे सकता है। यह वेब अनुप्रयोग में वैश्विक त्रुटियों के साथ दृश्यों को संभालता है, उदाहरण के लिए web.config के साथ त्रुटियां।

2

यदि आप Tracing in ASP.NET Web API प्रति एएसपी.नेट वेब एपीआई में ट्रेसिंग सक्षम करते हैं, तो अंतर्निहित ट्रेसिंग इंफ्रास्ट्रक्चर आपके द्वारा दी जाने वाली जानकारी को लॉग करेगा।

सामग्री बातचीत में असफल होने वाले विकृत अनुरोध के मामले में, आप डिफ़ॉल्ट कॉन्टेंट नेगोशिएटर में एक HttpError दिखाई देंगे।

यहाँ इस प्रकार की त्रुटि के लिए सरल का पता लगाने का एक उदाहरण है: वैकल्पिक रूप से किसी भी कस्टम जानकारी के साथ ही

DefaultContentNegotiator;Negotiate;Type='HttpError', formatters=[JsonMediaTypeFormatterTracer, XmlMediaTypeFormatterTracer, FormUrlEncodedMediaTypeFormatterTracer, FormUrlEncodedMediaTypeFormatterTracer]

लेखक का पता लगाने अपने इनपुट के रूप में एक TraceRecord दिया जाता है, जो अनुरोध जानकारी होगी आप शायद उपयोग करना चाहें।

वेब एपीआई ट्रेस लेखक का उपयोग करेगा जिसे आप अनुरोध के जीवन चक्र में जानकारी का पता लगाने के लिए कॉन्फ़िगर करते हैं। आप जीवन शैली की घटनाओं के साथ-साथ अपने स्वयं के नियंत्रक कोड का पता लगाने के लिए ट्रेस लेखक का उपयोग कर सकते हैं।