如何诊断来自 Web API 的慢速 HTTPS 请求
Posted
技术标签:
【中文标题】如何诊断来自 Web API 的慢速 HTTPS 请求【英文标题】:How to diagnose slow HTTPS requests from Web API 【发布时间】:2020-06-05 12:00:44 【问题描述】:我在 Windows Server 2012 R2 上有一个 Web API(ASP.NET Core 3.0、IIS 6.2)。当它向外部 SOAP API 发出 HTTPS 请求时,我在 20 秒后收到代码 500 的响应。我的 API 在日志中写道:
操作超时
异常堆栈跟踪的尾部:
在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果)\r\n 在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 结果)\r\n 在 System.ServiceModel.Channels.ServiceChannel .EndCall(String action, Object[] outs, IAsyncResult result)\r\n at System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.c__DisplayClass1_0.b__0(IAsyncResult asyncResult)\r\n--- 堆栈跟踪结束之前抛出异常的位置---
我通过 SoapUI 从同一服务器向外部服务器重复我的 API 请求。 2-3秒后成功。我的 Web API 也可以在我的另一台服务器上运行。
不幸的是,我不知道如何找到问题的原因。请给我一个想法好吗?
【问题讨论】:
WebAPI
项目中使用什么方法调用服务,直接构造HTTP请求?我建议你使用代理类或通道工厂来调用服务。 docs.microsoft.com/en-us/dotnet/framework/wcf/…另外请贴出WCF服务器的配置。我会尽力提供一些建议。
【参考方案1】:
我找到了解决方案。我刚刚从 4.4.0 更新了 nuget 包 System.ServiceModel.*
,WCF 请求现在可以正常工作了。
https://github.com/dotnet/wcf/issues/2368
【讨论】:
以上是关于如何诊断来自 Web API 的慢速 HTTPS 请求的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 IConfidentialClientApplication 获取安全 Web API 的令牌