2010-04-26 20 views
7

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).

Trả lời

5

Microsoft trả lời này here:

này đã cố tình thay đổi để hơn luôn đại diện cho độ phân giải tên thất bại. Nếu bạn có các chuỗi đầu vào rằng bạn chỉ muốn chuyển đổi sang IPAddresses, chúng tôi khuyên bạn sử dụng IPAddress.TryParse hoặc Dns.GetHostAddresses

+0

vào liên kết bị phá vỡ –

+0

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

+0

Liên kết đó hiện không hoạt động. – bgmCoder

Các vấn đề liên quan