我可以暂时覆盖.NET应用程序中的DNS解析吗?
我有一些包装代码,它运行一组NUnit测试,扫描实时网站以获取某些响应代码。
我想针对不同的服务器运行这些测试。 手动运行时,我可以通过编辑Windows System32 drivers中的/ etc / hosts文件并暂时将www.mysite.com设置为10.0.0来执行此操作。
有什么方法可以在.NET控制台应用程序中做同样的事情 – 暂时覆盖DNS记录或以某种方式拦截分辨率并返回不同的IP地址?
编辑:这用于测试Web场中的多个服务器。 我有三个实时服务器,所有这些都认为它们是www.example.com。 因为服务器使用HTTP主机头,我不能只针对server1,然后是server2,然后是server3运行测试,因为对http:// server1 /的HTTP请求不会返回与http://请求相同的内容。 www.example.com/已经解决了server1 …
在过去使用C ++时,我能够挂钩到WSOCK32.DLL的gethostbyname函数并重新路由DNS请求。 我使用Microsoft Detours库来做到这一点。
至于C#我发现了这个: http : //easyhook.codeplex.com/也许它会对你有所帮助。 基本上你可以挂钩gethostbyname
windows函数并执行你自己的代码或返回不同的结果(不同的IP)。
另一种可能的解决方案是在应用程序启动和结束时临时(并以编程方式)编辑hosts文件。 从你自己的代码。
编辑:我发现了我的旧C ++代码,也许它会给你一个提示做什么。
struct hostent FAR * WSAAPI MyGetHostByName(IN const char FAR * name) { // Call the regular function struct hostent* ret = GetHostByNameFunction(name); // Check if it's the hostname you want to reroute if ( strcmp(host, (char*)name) == 0 ) { // Edit the IP returned by the regular gethostbyname ret->h_addr_list[0] = hostIP; ret->h_length = 15; } // Return the result return ret; }
编辑2:找到另一个链接与更新的easyhooks
上述就是C#学习教程:我可以暂时覆盖.NET应用程序中的DNS解析吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/959192.html