У меня есть проект, в котором мне нужно отправить файл данных через веб-запрос. Нам нужно настроить двустороннюю аутентификацию, также известную как взаимная аутентификация. Мы не уверены, нужен нам специальный сертификат или нет, но мы знаем, что он должен быть уровня 3.
Мне не удается найти образец кода для этого случая. Я не знаю, куда добавить нашу информацию о сертификате. С этим кодом возникает ошибка Базовое соединение закрыто
, когда мы пытаемся прочитать поток ответа, и ServicePointManager.ServerCertificateValidationCallback
никогда не вызывается. Вот что у меня есть:
ServicePointManager.ServerCertificateValidationCallback = New Security.RemoteCertificateValidationCallback(AddressOf MyCertValidationCb)
httpReq = CType(System.Net.HttpWebRequest.Create(url), HttpWebRequest)
For Each cert As String In certs
X509cert = X509Certificate2.CreateFromCertFile(cert)
X509cert2 = New X509Certificate2(X509cert)
httpReq.ClientCertificates.Add(X509cert2)
Next
httpReq.Method = "POST" ' Post method
httpReq.ContentType = "text/xml" ' content type
' Wrap the request stream with a text-based writer
writer = New StreamWriter(httpReq.GetRequestStream())
' Write the XML text into the stream
reader = New StreamReader(filename.Name)
ret = reader.ReadToEnd()
reader.Close()
' Send the data to the webserver
writer.WriteLine(ret)
writer.Close()
' Wait for response
Dim httpRsp As System.Net.HttpWebResponse = CType(httpReq.GetResponse(), HttpWebResponse)
sr = New StreamReader(httpRsp.GetResponseStream)
responseText = sr.ReadToEnd
If httpReq IsNot Nothing Then
httpReq.GetRequestStream().Close()
End If
If httpRsp IsNot Nothing Then
httpRsp.GetResponseStream().Close()
End If
Любые советы или ссылки на блоги с примерами кода были бы замечательными. Спасибо.