मैं अपनी HOSTS फ़ाइल को बदलते समय .NET WebRequest का उपयोग कर रहा हूं। मैं देख रहा हूं कि System.Net उन परिवर्तनों का सम्मान नहीं करता है - मैं इसे ऐसा कैसे कर सकता हूं?मैं System.Net क्लाइंट DNS कैश को कैसे साफ़ करूं?
मैं सर्वर से एक होस्टनेम पीछे लोड संतुलित की एक संख्या है, मान लीजिए कि 'example.com' करते हैं। मैं व्यक्तिगत रूप से उनमें से कई को लक्षित करना चाहते, इसलिए मेरे कार्यक्रम हार्ड कोड मशीन विशिष्ट मेरी मेजबानों में आईपी पते example.com के लिए एक अनुरोध भेजने से पहले दाखिल होगा: पहली बार सर्वर और पहली अनुरोध के लिए
163.56.0.34 example.com
, यह ठीक काम करता है। तब मेरे कार्यक्रम में परिवर्तन मेजबानों फिर से फाइल:
163.56.0.48 example.com
और मैं HttpWebRequest एक नया बना सकते हैं। जब मैं इसे एक भेजता हूं, तो मैं नेटमॉन में देख सकता हूं कि यह अपेक्षित दूसरे के बजाय पहले आईपी पते (163.56.0.34) पर जाता है।
breakpoints और डिबग निशान का उपयोग करना, मैं सत्यापित किया है कि सही मान लिखा हो जाता है करने के लिए होस्ट हर बार फाइल। जब मैं किसी ब्राउज़र या अन्य प्रोग्राम से example.com तक पहुंचने का प्रयास करता हूं, तो यह HOSTS फ़ाइल का सम्मान करता है और दूसरे आईपी पते पर जाता है।
Netmon का उपयोग करते हुए मैं सत्यापित किया है कि अनुरोध दिखाया आईपी पते के लिए सीधे जा रहे हैं; कोई HTTP प्रॉक्सी नहीं है।
के बाद से सब कुछ का सम्मान है बदली हुई मेजबान फ़ाइल, मैं दृढ़ता से संदेह है कि System.Net बुनियादी ढांचे example.com के लिए DNS मेजबान आईपी संघ कैश की गई है। हालांकि, मुझे इस कैशिंग का कोई संदर्भ नहीं मिल सकता है, और इसे फ्लश करने या इसे बंद करने का कोई तरीका नहीं पता है।
मैं कैश से निपटने के लिए दिए गए निर्देशों का स्वागत करेंगे, और क्या इन लक्षणों, या अन्य प्रस्तावित नैदानिक चरण हैं, जो उपयोगी हो सकता है कारण हो सकता है के लिए सुझाव।
KeepAlive को झूठी पर सेट करने के परिणामस्वरूप प्रत्येक अनुरोध के लिए एक टीसीपी हैंडशेक होगा। आप सर्विसपॉइंट को प्रबंधित करके एक मध्यम जमीन पर हमला कर सकते हैं।कनेक्शन LeaseTimeout ताकि आप कुछ कनेक्शन का पुन: उपयोग कर सकें, फिर भी पुनः कनेक्ट होने पर संभावित परिवर्तनों के लिए DNS की जांच कर रहे हों। – ScottS