【发布时间】:2014-08-13 01:40:51
【问题描述】:
这似乎是一个非常古老的问题,但是,所有上述解决方案都不适用于我。我正在向客户端发出请求并收到我使用 fiddler 早期捕获的 HTTPS 响应,但是现在我的应用程序在没有 Fiddler 证书的情况下无法工作。当我在提琴手中选择解密 HTTPS 流量时,应用程序可以工作,否则即使我从提琴手中删除 HTTPS 捕获选项并删除提琴手证书,它也不会。
我也尝试过完全删除 fiddler,但这也不能解决问题。到目前为止,我没有选择。这是我的代码
Dim cert As X509Certificate = X509Certificate.CreateFromCertFile("Cert Location")
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf OnCertificateValidation)
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = CType(HttpWebRequest.Create(WebURL), HttpWebRequest)
request.Method = "POST"
Dim requestDataByte() As Byte = Encoding.UTF8.GetBytes(CreateRequestXML)
request.ContentLength = requestDataByte.Length
Dim requestdata As Stream = request.GetRequestStream()
requestdata.Write(requestDataByte, 0, requestDataByte.Length)
requestdata.Close()
request.GetRequestStream.Close()
request.ClientCertificates.Add(cert)
request.KeepAlive = False
Dim response As HttpWebResponse = CType(request.GetResponse, HttpWebResponse)
If response.StatusCode > 400 Then
MsgBox("Error:" + response.StatusDescription + vbCrLf + response.StatusCode)
End If
Dim response_stream As Stream = response.GetResponseStream
response_stream.Close()
response.Close()
Dim reader As StreamReader = New StreamReader(response_stream)
_response = reader.ReadToEnd
reader.Close()
我不断收到 500 内部服务器错误。 编辑:我之前没有正确关闭响应连接,但是我很久以前修改了那部分代码。那修改不应该解决了我的问题吗?
我已经根据我在网上找到的帖子修改了代码。但仍然无法解决问题。
【问题讨论】:
-
我现在也关闭了流。然而,没有任何改善。我也尝试在另一个系统中执行该程序,仍然是同样的问题。我真的很想得到一些帮助来解决这个问题。
-
考虑将调用
ClientCertificates.Add移动到Dim request行之后。您绝对应该删除呼叫request.GetRequestStream.Close(),因为您在呼叫requestData.Close()时已经关闭了该流 -
我昨天忘记更新我的问题了。事实上,我完全按照你的建议做了,现在一切正常。我没有注意到我的 WebRequest 不正确,因为 Fiddler 正在修复它。我尝试了网络异常以尝试查看问题所在,但就是找不到。希望有一种方法可以从某种调试信息中解决这个问题。正如您所建议的那样,我已经对我的 .Close() 调用进行了更改。谢谢!
标签: https certificate fiddler