Tôi đã sử dụng đoạn mã sau nhiều tháng (không có vấn đề) trong một môi trường .NET 2.0/3.5:Vấn đề với System.Net.Dns.GetHostEntry (dnsServer) trên NET 4.0
string server="192.168.1.3";
IPHostEntry ipe = System.Net.Dns.GetHostEntry(server);
IPAddress ipa = ipe.AddressList[0];
IPEndPoint ipep = new IPEndPoint(ipa, (int)UdpServices.Domain);
Ở đây, máy chủ được mã hóa cứng thành địa chỉ IP, nhưng trong ứng dụng của tôi, nó có thể có khả năng giống như "server.test.com".
Khi chuyển đổi dự án của tôi thành .NET 4.0, mã này ngừng hoạt động khi trực tiếp truyền địa chỉ IP (vẫn hoạt động với tên máy chủ). Nó bị treo với ngoại lệ này:
System.Net.Sockets.SocketException was unhandled
Message=The requested name is valid, but no data of the requested type was found
Source=System
ErrorCode=11004
NativeErrorCode=11004
StackTrace:
at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6)
at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
Bởi vì tất cả tôi cần là kết quả IPEndPoint, tôi có thể làm việc xung quanh vấn đề này bằng cách sử dụng IPAddress.Parse để tạo ra các đối tượng IPAddress, nhưng tôi muốn biết nếu có các bạn biết tại sao hành vi này đã thay đổi trong .NET 4.0? (Nếu chúng ta không thể giải quyết tên máy chủ từ địa chỉ IP, một ngoại lệ hiện đã được ném).
vào liên kết bị phá vỡ –
Liên kết này hoạt động: [https://connect.microsoft.com/VisualStudio/feedback/details/561083/dns-gethostentry-behaves-differently-in-net-4-0-than-previous-versions](https://connect.microsoft.com/VisualStudio/ feedback/details/561083/dns-gethostentry-behaves-different-in-net-4-0-so-trước-phiên bản) – empty
Liên kết đó hiện không hoạt động. – bgmCoder