c# - 构建可以覆盖主机文件的 HTTPPing

标签 c# .net sharepoint http

我希望构建一个 HTTPPing 实用程序,它可以绕过我们的负载均衡器并测试我们的 SharePoint 环境中的每个前端。编写(或查找)HTTPPing 并不困难,只是让它在我们的环境中运行。

我们的 SharePoint 环境中有五个 Web 应用程序,它们在负载平衡器后面运行,该负载平衡器在 10 个前端之间进行平衡。五个 Web 应用程序中的每一个都通过映射到虚拟 IP 的 DNS 条目进行访问,因此:

webapp1.mycompany.com --> 10.20.30.10
webapp2.mycompany.com --> 10.20.30.11
webapp3.mycompany.com --> 10.20.30.12
webapp4.mycompany.com --> 10.20.30.13
webapp5.mycompany.com --> 10.20.30.14

前端机器的IP地址可能是:

Front End 1  --> 10.22.33.40
Front End 2  --> 10.22.33.41
...
Front End 10 --> 10.22.33.49

我们的 SharePoint 环境使用备用访问映射,所以我不能做 http://10.22.33.40/ , 但有使用 http://webapp1.mycompany.com

如果我更改我的主机文件以包含条目,我可以直接访问一台机器:

webapp1.mycompany.com --> 10.22.33.40

但是 5 个 Web 应用程序 x 10 个前端意味着 50 个更改,我认为有更好的方法可以做到这一点。我希望该程序不编辑主机文件。

谢谢,蒂姆

最佳答案

您可以使用反射来欺骗主机 header :

        WebRequest wr = WebRequest.Create(@"http://127.0.0.1/Test.html");

        wr.Headers.GetType().InvokeMember("ChangeInternal", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, wr.Headers, new object[] { "Host", "www.example.com" });
        var resp = wr.GetResponse();
        StreamReader sr = new StreamReader(resp.GetResponseStream());
        MessageBox.Show(sr.ReadToEnd().ToString());

归功于 L.B.他的回答。

关于c# - 构建可以覆盖主机文件的 HTTPPing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9161575/

相关文章:

c# - 构建一个位图,用较小的图像填充它

c# - 如何创建旨在通过电子邮件共享的 byte[] 图像

java - Java 有类似微软的 CHESS 的工具吗?

c# - eazfuscator 公共(public)成员未混淆

c# - 将 Unicode 代理项对转换为文字字符串

c# - Mono 是否支持 System.Drawing 和 System.Drawing.Printing?

Sharepoint 2010(左右区域) - 删除

javascript - Sharepoint 如何识别您当前的站点是根站点还是子站点(子站点级别)?

asp.net - 访问 CRM/Sharepoint Web 服务中的 DefaultCredentials

c# - 将字符串文字分配给 char*