我正在编写一个程序,从用户提供的URL读取内容.我的问题是,代码是这样的:

Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
WebResponse webResponse = webRequest.GetResponse();
ReadFrom(webResponse.GetResponseStream());

如果提供的url是一个https://URL,则这是错误的.有没有人能帮我更改这个代码,以便它能与SSL加密的内容一起工作.谢谢.

推荐答案

您的做法是正确的,但用户可能会向安装了无效SSL证书的站点提供URL.如果在发出实际的web请求之前输入以下行,则可以忽略这些证书问题:

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

其中AcceptAllCertifications定义为

public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
    return true;
}

.net相关问答推荐

实体框架核心:Azure容器应用程序的执行超时已过期

节省用户在整个应用程序中使用的Flutter

当数据大量分布在微服务中时,我应该如何设计后端?

为什么 PropertyInfo.SetValue 在此示例中不起作用以及如何使其起作用?

无法在 Blazor Server 应用程序中触发 InputRadio 的 onchange 事件

为什么 .NET 中的 System.Version 定义为 Major.Minor.Build.Revision?

单击关闭按钮时隐藏表单而不是关闭

如何解决请确保文件可访问并且它是有效的程序集或 COM 组件?

Style 和 ControlTemplate 的区别

在 C# DllImport 中使用 32 位或 64 位 dll

如何从 appsettings.json 中获取价值

共享 AssemblyInfo 用于跨解决方案的统一版本控制

Select 文件夹对话框 WPF

测试没有预期的异常

.NET 事件 - 什么是对象发送者和 EventArgs e?

C#中的T是什么意思?

C# 中的 override 和 new 关键字有什么区别?

记录器包装器最佳实践

System.Array.CopyTo() 和 System.Array.Clone() 之间的区别

为什么 IList 不支持 AddRange