c# – Mono:非SSL URI上的HttpWebRequest SSL错误
发布时间:2020-12-15 21:09:07 所属栏目:百科 来源:网络整理
导读:我有一个我为.NET / Windows编写的控制台应用程序,我突然需要在我的unix系统上使用它.在大多数情况下,Mono在为我提供此功能方面取得了巨大的成功. 但是有一个小问题: 应用程序在运行时发出许多HttpWebRequests,而对于其中的一小部分,Mono返回错误: Error g
我有一个我为.NET /
Windows编写的控制台应用程序,我突然需要在我的unix系统上使用它.在大多数情况下,Mono在为我提供此功能方面取得了巨大的成功.
但是有一个小问题:
此错误消息似乎表示SSL错误.但是,此应用程序不会向SSL加密的URI发出任何请求(即所有URI都是http://). 有问题的主要代码如下: HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; req.UserAgent = UserAgent; req.AuthenticationLevel = AuthenticationLevel.None; req.AllowAutoRedirect = true; req.KeepAlive = true; req.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); req.Timeout = timeout; if (useCompression) { req.Headers.Add(HttpRequestHeader.AcceptEncoding,"gzip,deflate"); } 编辑:为了运行此代码,您可以按如下方式定义虚拟变量: string url = "http://example.com"; string UserAgent = "WhateverBot"; int timeout = 5000; bool useCompression = true; 应该注意的是,代码在Windows / .NET上没有任何问题. 解决方法
在Windows中运行Mono时,即使URL不是HTTPS,我也遇到了这个问题.让我大声说出来:它没有被重定向.
解决方案一直是使用hack: System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; 我的猜测是,Mono不会在Windows密钥库中查找证书,因此找不到任何内容,因此HTTPWebXXXX未正确初始化,然后失败. 我的猜测是,任何麻烦重现你的错误的人都会知道他们正在用Mono做什么(例如我不像),因此他们的环境设置正确并且无法重现这个现实世界的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |