所以,我是数据库管理员,由于奇怪的原因,我必须维护c#代码,我完全吮吸这个...代码应该从网址下载图像,但当网址是httpS我有一个错误(简单的http网址没问题)。我认为我的前任有同样的问题,因为我可以在代码中看到忽略https的演练:
public override Stream GetData(DataManager dm)
{
try
{
// Change SSL checks so that all checks pass
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
// download image
return new MemoryStream(dm.Caller.DownloadData(OriginUrl));
}
catch(Exception e)
{
throw new Exception(String.Format("Failed to download image at this url '{0}'", OriginUrl), e);
}
}
我试着阅读一些关于ServerCertificateValidationCallback的内容,但这是我在c#中读取的第一个代码,我完全丢失了......你知道为什么这段代码不适用于httpS网址吗? (标准的http网址没问题)。
非常感谢
答案 0 :(得分:0)
var req = (HttpWebRequest)WebRequest.Create(OriginUrl);
try
{
using (var resp = (HttpWebResponse)req.GetResponse())
{
return resp.GetResponseStream();
}
}
catch (Exception e)
{
throw new Exception(String.Format("Failed to download image at this url '{0}'", OriginUrl), e);
}
答案 1 :(得分:0)
尝试在下面添加此code并将其放在下载图片的行上方:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;