Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 了解与.NET的SSL连接';HttpWebRequest_Asp.net_Ssl_Httpwebrequest - Fatal编程技术网

Asp.net 了解与.NET的SSL连接';HttpWebRequest

Asp.net 了解与.NET的SSL连接';HttpWebRequest,asp.net,ssl,httpwebrequest,Asp.net,Ssl,Httpwebrequest,我似乎无法理解这一点。我正在使用HttpWebRequest尝试将一些数据发送到另一个站点。我正试图找出配置防火墙的最佳方法,但我不知所措。通过观察NetMon跟踪,它似乎忽略了我告诉它的内容;我在请求中看到的HTTP头(不是浏览器到我的服务器请求,而是我的服务器到远程服务器请求)不起作用 Http: Request, CONNECT some.random.url:443 Command: CONNECT URI: some.random.url:443 Location: some.

我似乎无法理解这一点。我正在使用HttpWebRequest尝试将一些数据发送到另一个站点。我正试图找出配置防火墙的最佳方法,但我不知所措。通过观察NetMon跟踪,它似乎忽略了我告诉它的内容;我在请求中看到的HTTP头(不是浏览器到我的服务器请求,而是我的服务器到远程服务器请求)不起作用

Http: Request, CONNECT some.random.url:443
Command: CONNECT
URI: some.random.url:443
    Location: some.random.url:443
ProtocolVersion: HTTP/1.1
Host: some.random.url
ProxyConnection: Keep-Alive
HeaderEnd: CRLF
TCP端口似乎也总是以HTTP(80)开始。我似乎无法让它处理443最初,无论什么;SSL在开始“真正”传输之前是否先从端口80开始协商?为了启动,此请求似乎忽略了我在启动请求之前尝试设置的任何HttpWebRequest设置:即使我将HTTP 1.0或keep alive设置为false,它仍然从上面的头开始

它在干什么?我想知道如何让它通过,但我不知道为什么它会表现出这种行为

下面的代码,如果有帮助的话

Uri newUri = new Uri("https://some.random.url:443/random");
System.Net.HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(newUri);
wr.Method = "POST";
wr.ContentType = "application/x-www-form-urlencoded";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] requestBytes = encoding.GetBytes("test");
wr.ContentLength = requestBytes.Length;
System.IO.Stream stream = wr.GetRequestStream(); //FAILS HERE, ServerProtocolViolation

我仔细研究了Google和其他SSL/HttpWebRequest问题,但没有找到解决问题的灵丹妙药。

我通过SSL进行了
HttpWebRequest
调用,从未遇到过这个问题。我能看到的唯一一件我从未做过的事情就是在URL中包含端口号(443)


.NET应该处理SSL连接的创建,而不会在使用
https
协议时被告知要使用哪个端口。如果还没有,请不要输入端口号。如果你有,那我就没有主意了;)

您的问题似乎是ASP.NET服务器和远程服务器之间的代理服务器。您可以尝试不使用代理服务器(wr.proxy=null),但这可能是网络设置所必需的


我建议您与负责服务器所在网络的人员交谈,并查看代理是否支持SSL直通(通过.NET代表您发送的CONNECT命令)。

试试这个,告诉我您是如何找到它的

htw.Credentials=新网络凭据(用户名、密码)