问题描述
您好,
我有许多服务器都在负载均衡器后面使用相同的URL我想使用httpwebrequest轮询每个服务器以查看它是否正在呈现内容。所以有一个URL,即
,我想使用httpwebrequest的主机值,用于指定IP地址,即Server1的IP,Server2的IP,Server3的IP轮流,并检查每个服务器是否返回信息
I have a number of servers that all use the same URL behind a loadbalancer and I wanted to use httpwebrequest to poll each server to see if it was rendering content. So there is one URL, i.e.https://mysite.com/myfile.xml and i wanted to use the Host value of httpwebrequest to specify an IP address, i.e. IP of Server1, IP of Server2, IP of Server3 in rotation and check each server was returning the information
$wc=[system.net.httpwebrequest]::create("https://mysite.com/myfile.xml")
$wc.host = "127.0.0.1"
$resp = $wc.getresponse()
这失败了:
异常调用" GetResponse"用"0"表示"0"。参数:"底层连接已关闭:无法为SSL / TLS安全通道建立信任关系。"
$
在行:1 char:24
+ $ resp = $ wc.getresponse<<<< ()
+ CategoryInfo :NotSpecified:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:DotNetMethodException
Exception calling "GetResponse" with "0" argument(s): "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."
At line:1 char:24
+ $resp = $wc.getresponse <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
如果我没有设置Host值并依赖OS Hosts文件来定位每个服务器,它会按预期工作,因此证书本身是可信且有效的,只是试图转到特定的IP作为httpwebrequest的一部分不起作用。
If I don't set the Host value and rely on the OS Hosts file to target each server, it works as expected so the certificate itself is trusted and valid, just trying to go to a specific IP as part of httpwebrequest doesn't work.
还有另一种方法来测试这个设置OS主机文件条目,测试,更改主机文件的缺点,测试等....
Is there another way to test this short of setting an OS hosts file entry, test, change hosts file, test, etc....
谢谢,
Dominic
推荐答案
主机 属性可用于设置Host头值,以便在独立于请求URI的HTTP请求中使用。
主机 属性可以包含主机名和可选的端口号。没有端口信息的主机头表示所请求服务的默认端口(例如,HTTP URL的端口80)。
指定主机的格式和端口必须遵循IETF发布的RFC2616第14.23节中的规则。符合这些要求的示例指定端口8080将是
主机 property:
www.contoso.com:8080
使用 主机 属性显式指定自定义主机标头值也会影响区域缓存,Cookie和身份验证。当应用程序提供特定URI前缀的凭据时,应用程序
需要确保使用包含Host标头值的URI,而不是URI中的目标服务器。缓存资源时使用的密钥使用Host头值而不是请求URI。 Cookie存储在
并按服务器域名进行逻辑分组。如果应用程序指定了主机标头,则此值将用作
域。
如果 Host 属性,则HTTP请求中使用的Host头值基于请求URI。
一方面,HTTPS通常不使用端口80,而是正确的其他内容? 我在X509上很弱,所以不能说出身份验证参数。 您可以尝试运行wireshark跟踪以查看它是否发生。
For one thing HTTPS normally doesn't use port 80, rather it's something else right? I am weak on X509 so can't speak for authentication parameters. You could try running a wireshark trace to see it happening too.
这篇关于httpwebrequest,设置主机,ssl错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!