Эта служба Windows работает каждые 5 секунд или около того, что позволяет подключаться и получать данные в 99% случаев.Существует некоторая проблема, которая еще не решена, когда служба начнет отказывать.Мы получим эту ошибку обратно в течение нескольких минут / часов, а затем служба, похоже, исправит себя и продолжит получать данные.
System.Net.WebException: запрос был прерван: не удалось создать безопасный канал SSL / TLS,at System.Net.HttpWebRequest.GetResponse ()
Мне интересно, есть ли в приведенном ниже коде что-либо, способное вызвать такое поведение.Если нет, я предполагаю, что это какая-то проблема с сервером, который мы проверяем.Любая помощь будет оценена.
ServicePointManager.SecurityProtocol.SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue = false;
public abstract class QueryBase
{
private const string URL = "https://whatever.com/xml/query";
private readonly X509Certificate certificate;
public static Cookie Session { get; set; }
private readonly Regex sessionReg = new Regex("Session=(\\w+)", RegexOptions.Compiled);
protected QueryBase(X509Certificate cert)
{
certificate = cert;
}
protected abstract string GetPostData();
public string SubmitQuery()
{
string data;
var request = CreateRequest();
using (var response = (HttpWebResponse) request.GetResponse())
{
if (Session == null)
{
for (var i = 0; i < response.Headers.Count; i++)
{
var name = response.Headers.GetKey(i);
if (name != "Set-Cookie") continue;
var value = response.Headers.Get(i);
var match = sessionReg.Match(value);
if (match.Captures.Count <= 0) continue;
Session = new Cookie("Session", match.Groups[1].Value, "/", "whatever.com");
break;
}
}
using (var responseStream = response.GetResponseStream())
{
using (var reader = new StreamReader(responseStream))
{
data = reader.ReadToEnd();
}
}
}
return data;
}
private HttpWebRequest CreateRequest()
{
var request = (HttpWebRequest) WebRequest.Create(URL);
request.ContentType = "text/xml";
request.Method = "POST";
request.UserAgent = "NOTABROWSER";
request.ClientCertificates.Add(certificate);
if (Session != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(Session);
}
var xml = GetPostData();
var xmlBytes = Encoding.ASCII.GetBytes(xml);
request.ContentLength = xmlBytes.Length;
var s = request.GetRequestStream();
s.Write(xmlBytes, 0, xmlBytes.Length);
return request;
}
}