c# - 如何使 HttpClient 在 sonarqbue 中安全发送
问题描述
Sonarqube 扫描我们的代码并显示“确保此 http 请求已安全发送”。
除了使用 Singleton 模式之外,还有其他正确的方法来实现 HttpClient 吗?我还尝试使用 sonarqube 建议的 ConfigureAwait(false) 女巫。这是链接https://rules.sonarsource.com/csharp/RSPEC-3216 但是 sonarqube 检测到它并说同样的错误。
解决方案
在这里阅读:https ://sonarcloud.io/documentation/user-guide/security-reports/
此类问题是安全热点而不是漏洞。它告诉您应该手动检查此行,如果可以为当前代码停用它。
旁
在任务上使用 .Result 时要小心。在错误的地方,您可能会遇到死锁(例如,从 UI 上下文调用)
更好的实现是将 httpClient.PostAsync 包装在带有 .ConfigureAwait(false) 的异步方法中。
await _httpClient.PostAsync(apiURL, content).ConfigureAwait(false);
然后,如果需要,您可以使用 .Result 调用此方法
ConfigureAwait(false) 告诉等待之后的代码不必在调用者上下文上运行(避免死锁)。
推荐阅读
- c - 为什么这段代码会给我分段错误?
- excel - 如何在 VBA 中选择和复制 excel 的不同部分到 excel 中?
- c# - Visual Studio 扩展:如何禁用本机命令?
- c++ - 如何在directx11着色器中使用swizzle .rrrg
- r - 根据模式从字符串中提取项目
- ios - 有什么方法可以在 iOS 中归档发布版本之前自动运行我的所有单元测试
- java - 如何将 Java Map 中的属性自动映射到 POJO 类属性
- dart - Flutter:从另一个 Dart 文件中获取 AlertDialog
- javascript - 在浏览器中检测实时音频输入的音高
- javascript - 使用Javascript从右到左插入排序