什么可能导致GET Web请求上的"不支持证书密钥算法"异常

her*_*ist 7 c# facebook-graph-api windows-server-2012

我们正在尝试使用标准webrequest从asp .net MVC 4.6应用程序连接到facebook api.除了我们的一台服务器之外,其他所有服 有问题的服务器正在运行Windows 2012和IIS 8.

在这个特定的服务器上,我们在向Facebook运行GET webrequest时会遇到以下异常.

不支持证书密钥算法.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.NotSupportedException:不支持证书密钥算法.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[NotSupportedException:不支持证书密钥算法.] System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)+409 System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)+213

[WebException:底层连接已关闭:发送时发生意外错误.]
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)+894 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)+92

[HttpRequestException:发送请求时发生错误.]
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()+32
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+96 System.Runtime.CompilerServices.TaskAwaiter`1. GetResult()+49

代码如下所示:

    // Request
    private static async Task<T> Request<T>(string url) where T : class
    {
        using (var handler = new WebRequestHandler())
        {
            handler.ServerCertificateValidationCallback = delegate { return true; };
            using (var client = new HttpClient(handler) { Timeout = System.TimeSpan.FromSeconds(20) })
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var result = await client.GetAsync(url);
                if (result == null) return null;
                var model = await result.Content.ReadAsAsync<T>();
                return model;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我们正在摸索为什么它适用于除我们的一台服务器之外的所有服务器.

有没有人有任何想法可能导致此错误以及如何解决它.

谢谢.

小智 8

我设法复制问题,它似乎是网络跟踪中的错误导致X509Certificate2.ToString(true)被设置为实习生抛出异常.

我找到的唯一解决方案是删除整个'System.Dianositics'部分,它将禁用日志记录.

  • 谢谢,我们将其缩小到删除<switches> <add name ="System.Net"value ="Verbose"/> (2认同)
  • 的bizzare.我禁用了日志,异常消失了......多么美妙的BCL :) (2认同)