Mam problem, w którym moje żądania sieci .NET zawsze trafiają na ten sam adres IP dla danego rekordu CNAME. Nazwa CNAME jest powiązana z wieloma adresami IP, a te adresy IP są zwracane w losowej kolejności za każdym razem, gdy następuje wyszukiwanie DNS (potwierdzone przez uruchomienie programu nslookup)..NET buforuje DNS na zawsze w Server 2008
napisałem prostą aplikację do testowania to:
public void TestDNS()
{
while (true)
{
var ipAddress = Dns.GetHostAddresses("mywebsite.com").First().ToString();
Console.WriteLine(string.Format("Current: '{0}' at: '{1}'", ipAddress, DateTime.Now.ToLongTimeString()));
Thread.Sleep(1000);
}
}
mam uruchomić tę aplikację na Server 2008 Datacenter Server 2008 R2 Datacenter Server 2012, Windows 7 i Windows 8. Wszystkie maszyny miał najnowszy aktualizacje i dodatki Service Pack są dostępne.
Jedynym urządzeniem, które zawiedzie, jest Serwer 2008. Każde inne urządzenie przełącza adres IP mniej więcej raz na minutę (TTL wynosi 1 minutę). Serwer 2008 nigdy się nie przełącza (działa przez ponad godzinę).
Aby być czystym, działające narzędzie nslookup i inne narzędzia na maszynie wydają się wskazywać, że DNS zwraca dokładnie to, czego oczekiwałbym. Ten problem wydaje się być specyficzny dla platformy .NET na serwerze 2008.
Próbowałem pozycji wymienionych w tym powiązanym answer bez powodzenia.
Wszelkie pomysły?
można mieć Serwer DNS powrotną zupełnie inny zestaw adresów IP dla każdego połączenia?Dzięki temu dowiesz się, czy elementy są buforowane, czy też z jakiegoś powodu środowisko wykonawcze sortuje właśnie zwracane wartości. –
Dobry pomysł @ JimMischel. Próbowałem zmienić rekord DNS po uruchomieniu aplikacji .NET i nic się nie zmieniło. Wygląda na to, że nie wykrył on żadnych zmian w DNS (tj. Na zawsze buforowanych). Jedyną rzeczą, którą znalazłem, jest aktualizacja pliku hosts. Jeśli to zrobię, aktualizuje DNS w działającej aplikacji .NET. – manu08
Metoda GetHostAddresses() zwraca tablicę typu IPAddress. Zobacz moją odpowiedź. –