.NET - تنزيل صفحات متعددة من موقع ويب مع استعلام DNS واحد

StackOverflow https://stackoverflow.com/questions/2699230

سؤال

أنا أستخدم httprequest لتنزيل عدة صفحات من موقع ويب (في حلقة). تبسيطه يبدو هكذا:

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(
            "http://sub.domain.com/something/" + someString
        );

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

//do something

لست متأكدًا تمامًا في الواقع ولكن يبدو أن كل طلب يحل العنوان مرة أخرى (لا أعرف كيفية الاختبار إذا كنت على صواب). أود تعزيزه قليلاً وحل العنوان مرة واحدة ثم أعد استخدامه لجميع الطلبات. لا يمكنني معرفة كيفية إجبار httprequest على استخدامه.

لقد حاولت استخدام dns.gethostaddresses ، وتحويل النتيجة إلى سلسلة وتمريرها كعنوان إلى httpwebrequest.create. لسوء الحظ ، يقوم الخادم بإرجاع الخطأ 404 ثم. تمكنت من Google على الأرجح لأن رأس "المضيف" لاستعلام HTTP لا يتطابق مع ما يتوقعه الخادم.

هل هناك طريقة بسيطة لحل هذا؟

هل كانت مفيدة؟

المحلول

أشك في أن DNS لا يتم تخزينه مؤقتًا بالفعل لأكون صادقًا ، ولكن هناك طريقة لفعل ما تطلبه.

بعد إنشاء الطلب باستخدام عنوان IP ، قم بتعيين ملف مضيف خاصية على اسم DNS. هذا يجب أن يحل مشكلتك 404.

شيء قد يساعدك في تسريع طلباتك المتعددة هو ضبط حافظ على حياتك خاصية إلى صواب. سيؤدي ذلك إلى فتح الاتصال ويسمح لك بتقديم طلبات متعددة دون الحاجة إلى إعادة إنشاء الاتصال في كل مرة.

نصائح أخرى

يعد 404 بالتأكيد بسبب "رأس المضيف" للموقع - يمكن استضافة آلاف المواقع في عنوان IP واحد ، ويستخدم خادم الويب المجال لمعرفة أي واحد تريده.

يجب أن يقوم الكمبيوتر المحلي بالتخزين المؤقت لنتائج استعلام DNS ، لذلك على الرغم من أنه سيقوم بإنشاء طلب في كل مرة يمكنك فيها الوصول إلى المجال ، فإن الطلب لن يترك جهاز الكمبيوتر الخاص بك بعد المرة الأولى ، فقط باستخدام نتائج البحث المحترحة محليًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top