【发布时间】:2014-04-04 23:13:14
【问题描述】:
具体来说,我正在使用 Essential Objects HtmlToPdf 创建一个 PDF。
当用户单击“创建”按钮时,我需要获取服务器的非 NAT ip 地址 (192.168.xx),以便我可以强制它从该地址而不是主机名创建 PDF .
总体问题是:在 Web 服务器上,站点的主机名实际上并没有让您访问该站点,因为 DNS 指定了外部 IP 地址,这会导致连接被阻止。因此,例如 - www.testsite.com 正在转换为公共 IP 地址,因此服务器上的 PDF 创建者无权访问该地址。
我创建了一个主机文件条目,强制 www.testsite.com 转到内部 IP。但这对于多次安装来说是一场噩梦。
我试过了
string hostName = HttpContext.Current.Request.Url.Host;
IPHostEntry ipAddressList = Dns.GetHostEntry(hostName);
string ipAddress = "";
foreach (IPAddress ip in ipAddressList.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
ipAddress = ip.ToString();
break;
}
}
但这会返回 DNS 化 IP(外部),然后防火墙 NAT 将其返回到我想要的 IP。
【问题讨论】:
-
说你的问题是“紧急的”是获得否决票的最佳方式,仅供参考。
-
如果您知道您特别想要内部 IP,您不能在
foreach中应用 if 来查找内部 IP?