【发布时间】:2018-01-24 12:31:59
【问题描述】:
所以,我是一名数据库管理员,出于奇怪的原因,我必须维护 c# 代码,而我对此完全不屑一顾……代码应该从 url 下载图像,但是当 url 是 httpS 时,我有一个错误(简单的 http url 完全没有问题)。我认为我的前任也有同样的问题,因为我可以在代码中看到忽略 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 url吗? (标准的 http url 完全没有问题)。
非常感谢
【问题讨论】:
-
不起作用对我们没有帮助,它现在以什么方式起作用?你有错误吗?如果有,它们是什么?
-
除了 DavidG 已经说过的,我们还需要更多关于代码的细节。看起来实际下载发生在
dm.Caller.DownloadData(OriginUrl),但我们不知道该代码是什么样的......这是您正在使用的第三方库还是您自己(即您的前任)代码或其他什么? -
嗨,DavidG,的确,很抱歉,它不是很有启发性....代码中捕获的异常“e”收到法语消息“Impossible de lire les données de la connexion de transport : Une connexion existsante一个 dû être fermée par l'hôte 遥远的地方。”我可以近似地翻译为“无法读取连接的数据,现有连接可能已被远程主机关闭”(可能不是准确的翻译)......
-
嗨,克里斯,关于 DownloadData(),当我要求函数参考时,我转到的文件名为 System.Net.WebClient.cs,它似乎是第三方库,因为我没有'当我看他的定义时没有任何代码,只是
public byte[] DownloadData(string address);这行,没有代码 -
我忘了提一些事情:对于假的 https url(即,当在网络浏览器中我用 http 替换 https 并且 url 仍然访问网站但在非安全连接中),那么我可以下载图像,但如果我让 S 在 https 中,即使是假的 https url,DownloadData 也不起作用)