使用C#如何确定URL是否是Intranet URL?如果URL是内部网和公共网,我想要一些代码来做某事。
答案 0 :(得分:9)
答案 1 :(得分:8)
您知道内部子网(就IP地址而言)吗?如果是这样,我只需要解析主机名,看看它是否是内部的。
答案 2 :(得分:7)
如果url解析为tcpIp地址,该地址是作为私有IPAddress留出的IP地址之一,那么它肯定在您的Intranet上。这些是
如果它解析为任何其他IP地址, 可能 仍然在您的Intranet上,但它有一个公共IP地址,因此可以从Intranet外部访问< / p>
答案 3 :(得分:0)
通常,没有可靠的方法来从Internet URL告知Intranet URL。如果您的程序可以使用Intranet,那么它看起来就像Internet一样,如果没有,那么您仍然不知道该URL是否应该是一个可用的Intranet URL,或者只是一个(暂时)损坏的Internet URL
您需要一些特殊知识,例如提供Intranet的服务器的域名或IP,以便区分它们。
答案 4 :(得分:0)
如果您想确定任何给定的URL是否是任何公司的内部网URL(而不是为某个特定公司专门设置代码),我祝你好运。
通常,但并非总是如此,itranet网址没有顶级域名(顶级域名,例如.com
)。但是,我见过一些。
几乎总是(AFAIK),Intranet域将解析为与计算机当前地址类似的IP地址。请注意,我没有说同一个子网;大型内部网可以有多个子网。另请注意,如果计算机不在公司Intranet中,则将成为可解析为类似IP地址的regualr域名。 (除非计算机在NAT后面)
答案 5 :(得分:0)
我不是C#程序员,所以我不能为您提供代码,但基本方法是将URL的主机名部分与Intranet中的服务器的主机名部分进行比较。或者,如果您的URL只使用IP而不是DNS名称,请将IP与Intranet服务器的IP进行比较。
使用字符串操作破解URL - 尽管我认为C#必须有一个可以为您执行此操作的URL类 - 并提取主机名,将其与服务器列表进行比较。
答案 6 :(得分:0)
简单但不完美但适用于80%的情况是简单地检查URL中是否有句号。我知道Intranet URL可以完全合格,但根据我的经验(在Microsoft),大多数都没有,而且效果非常好。
答案 7 :(得分:0)
您可以询问Internet Explorer以查看该域是否与已接受的Intranet域列表匹配。
注册表项为HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ZoneMap \ Domains
如果域的协议值为1,则将其视为Intranet域。您需要执行nslookup来收集“真实”地址。
答案 8 :(得分:-1)
要添加其他人所说的内容,Intranet在其地址中没有任何已知的顶级域名。我曾在几家公司工作过,所有Intranet都是这样的:
http://developments/admin - 您会注意到根本没有顶级域名。因此,它解析为网络中的计算机。同样,顾名思义,您不可能在企业环境之外访问它。