.NET, файл хоста Windows, переопределение dns с помощью кода

#.net #url #dns #lookup #hosts

#.net #url #dns #поиск #hosts

Вопрос:

Я работаю над проектом, в котором мы хотим динамически изменять IP-адрес, на который отправляются запросы в нашем приложении. Итак, например, первый запрос, который мы отправляем в myWebsite.com переходит к 192.168.123.1, второй мы хотим перейти к 192.168.123.5, третий к 192.168.123.10.

Я знаю, что можно реализовать функциональность такого типа с помощью файла hosts Windows, расположенного по адресу c:windowssystem32driversetc однако для этого потребуется закрыть приложение, изменить файл, а затем снова открыть приложение.

Есть ли какие-либо.Доступны сетевые библиотеки / методы, которые позволили бы нам динамически переопределять DNS из нашего кода?

Спасибо, Дэвид


Мне удалось с этим разобраться. Используя VB.NET:

     Dim c As New WebClient
    c.Headers.Add("Host", "myWebsite.com")
    c.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2")
    c.Headers.Add("Accept", "text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8")
    c.Headers.Add("Accept-Language", "en-gb,en;q=0.5")
    c.Headers.Add("Accept-Encoding", "0")
    c.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7")

    Dim s
    s = c.DownloadString("http://192.168.123.10/index.aspx")
  

Установка заголовка Host сообщает IIS, на какое приложение нацелен запрос. Это позволяет нам иметь IP-адрес в строке URI объекта WebClient.

Спасибо, Дэвид

Комментарии:

1. Подделать заголовок. Блестяще. Я действительно не хотел попадать в DLL-хуки.

2. Похоже, что на самом деле это не работает — заголовок Host перезаписывается именем host из URL.

Ответ №1:

Мне удалось с этим разобраться. (согласно моему комментарию выше).