यह जानकर कि (कम से कम) तीन एपीआई हैं जो आंतरिक रूप से Thread.Abort
का उपयोग करते हैं, मैं अधिक व्यावहारिक शर्तों में जवाब देना चाहता हूं, इसके बारे में क्या करना है, इसके बारे में क्या करना है।
हमारे लिए, यह त्रुटि अचानक लॉग इन होने लगी। किया बदल गया? हमने कुछ डेटाबेस प्रक्रिया में एक बग तय किया जो साइटमैप से निपट रहा था।
लॉग 4नेट लॉग ने एक्स-फॉरवर्डेड-फॉर हेडर दिखाया है (हम एनएलबी के पीछे हैं) Googlebot का आईपी पता था, 66.249.78.x जिसने साइटमैप परिवर्तन के बारे में अपने सिद्धांत को बल दिया, जिससे Google हमारी साइट को अधिक आक्रामक रूप से छवियों की तलाश में क्रॉल कर रहा था।
पहली बात यह जानना था कि केवल Googlebot इस समस्या का कारण बनने में सक्षम था। कोई अन्य क्लाइंट ट्रिगर नहीं कर रहा था जो भी कोड पथ Response.Redirect
, या जो कुछ भी उपयोग करता है।
तो HttpAplication.Error
हैंडलर में, मैंने सभी शीर्षकों के साथ अतिरिक्त विस्तृत आउटपुट लॉग करने के लिए कुछ कोड जोड़ा, और HttpResponse
और HttpContext
में अधिकांश डेटा लॉग इन किया। लॉग करने के लिए spewed।
यह मुझे देखने देता है कि समस्या यह थी कि Googlebot एक आईफोन उपयोगकर्ता एजेंट स्ट्रिंग का उपयोग कर रहा है और इसके साथ सशस्त्र है, मैं "आईफोन" के लिए कोडबेस खोज सकता हूं और इसके साथ आता हूं:
private void CheckIPhoneAccess() { ... }
और वह एक पुनर्निर्देशन का उपयोग करता है।
इसके बारे में क्या करना है?
खैर, इस वृद्ध कोडबेस के लिए, यह सभी Response.Redirect
कॉल को रेट्रो-पैचिंग के लायक नहीं है, इसलिए मैं एप्लिकेशन के लिए ThreadAbortException
के लिए लॉगिंग स्तर को कम करने जा रहा हूं।
मैं Googlebot के मोबाइल क्रॉलर के व्यवहार को बदल दूंगा, जो कि हमारी साइट मोबाइल पर कौन सी सेवा करता है, इसके बारे में 'झूठ' नहीं लेता है क्योंकि यह केवल पहली हिट पर रीडायरेक्ट करता है, इसके बाद यह एक कुकी पढ़ता है और छवि दिखाता है । Googlebot उस कुकी को कैश नहीं लग रहा है।
यह सही नहीं है, लेकिन साइट को पुनर्निर्मित करने की वजह है। शायद स्कैला या कुछ का उपयोग कर एक और टीम द्वारा, इसलिए व्यावहारिक शब्दों में, मुझे लगता है कि यह एक अच्छा विकल्प है। मैं टिप्पणियां जोड़ूंगा और बाद में इस मुद्दे पर फिर से विचार कर सकता हूं, एक Response.SafeRedirect
एक्सटेंशन बनाएं जो इस सलाह को समाहित करता है:
क्यों Response.Redirect सिस्टम का कारण बनता है। थ्रेडिंग। थ्रेडएबॉर्ट अपवाद?
ल्यूक