簡體   English   中英

如何在WebRequest中模擬DNS名稱解析失敗?

[英]How to simulate DNS name resolution failure in WebRequest?

最近發現,在C#中使用異步套接字API實際上會在調用線程上執行DNS解析,因此,如果解析存在問題,它將一直掛起直到超時。
我想找到一種無需接觸運行代碼即可模擬DNS解決問題的方法,以便質量檢查人員也可以在測試中使用它。

敏感 :許多.NET異步API(例如WebRequest,Image(WinForms,WPF))在調用線程上執行DNS解析,這可能導致UI掛起。

示例:(我希望能夠模擬什么)
如果DNS無法解析,則代碼將永遠無法到達(1),但在某些超時延遲后,EndGetResponse(2)中會引發異常。

class Program
{
    static void Main()
    {
        var request = WebRequest.Create("http://www.google.com");
        request.BeginGetResponse(WebRequestCallback, request);
        // (1)
        Console.ReadLine();
    }
    private static void WebRequestCallback(IAsyncResult ar)
    {
        // (2)
        var response = ((WebRequest) ar.AsyncState).EndGetResponse(ar);
    }
}

Thx Hans,好主意。
我將添加確切的步驟:

  1. 控制面板->網絡->更改適配器設置
  2. 雙擊您使用的連接
  3. 您使用的TCP協議的屬性
  4. 高級
  5. DNS標簽
  6. 添加DNS服務器IP(*)
  7. 關閉所有網絡窗口
  8. 運行:“ ipconfig / flushdns”

(*)必須是可以解析但不會返回DNS答復的IP(google.com很好),因為否則DHCP會返回響應太快,導致地址無法解析,並且如果服務器存在,則不應返回響應因此將達到超時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM