asp.net - 了解与 .NET 的 HttpWebRequest 的 SSL 连接

标签 asp.net ssl httpwebrequest

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

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 DstPort 似乎也总是以 HTTP(80) 开头。无论如何,我最初似乎无法让它处理 443; SSL 在开始“真正”传输之前是否从端口 80 开始协商?首先,此请求似乎忽略了我在启动请求之前尝试设置的任何 HttpWebRequest 设置:即使我将 HTTP 1.0 或 keep-alive 设置为 false,它仍然以上述 header 开始。

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

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

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 问题,但无法想出 Elixir 。

最佳答案

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

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

关于asp.net - 了解与 .NET 的 HttpWebRequest 的 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/400428/

相关文章:

MySQL - 需要 SSL 但服务器不支持它

c# - 在 winforms 中使用 HttpWebRequest 传递 cookie?

C# 代码 : Is this how ASP. NET AJAX 脚本可以工作吗?

c# - 将 "Service Account"证书存储与 .NET 2.0 HttpWebRequest 一起使用

c# - 将文本转换为日期时间?

javascript - 检测浏览器 TLS 兼容性

jquery - 从HTTP获取数据

ssl - HttpWebRequest Server Unavailable 503问题

asp.net - ASP.NET 中 <%# Bind ("") %> 和 <%# Eval ("") %> 有什么区别?

c# - 如何通过页面加载 asp.net 判断表单复选框是否被选中