c# - TLS 1.1 和 1.2 的连接问题 - Azure Web 应用
问题描述
在我的应用程序中,我从另一个 WebAPI 方法(理想情况下是内部服务调用)调用用 WebAPI 编写并托管在 PaaS 环境中的 API,比如 WebApp_A 中的 MethodA 正在调用 WebApp_B 中的 MethodB。但是如果 WebApp_B 的 TLS 设置是 1.1 或 1.2(它适用于 1.0),我会收到上述错误。“无法从传输连接读取数据:现有连接被远程主机强行关闭。”
我有类似的 WebApp (WebApp_C),它没有 TLS 错误。下面是我们用来从 WebApp_A 调用 WebApp_B 中的 MethodB 的代码
public async Task<ServiceResponse> CreateDialog(RequestObject requestObject)
{
ServiceResponse serviceResponse = new ServiceResponse();
try
{
using (var client = new HttpClient())
{
SessionTokenBo jwtData = new SessionTokenBo();
Logger = _logger;
jwtData = GetInternalToken(InternalCallTypes.Utilities.ToString(), int.Parse(ServiceConfiguration.TokenExpiryWindow), int.Parse(ServiceConfiguration.InternalTokenExpiryWindow));
if (null != jwtData)
{
client.BaseAddress = new Uri("URI");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwtData.Token); HttpResponseMessage response = await client.PostAsJsonAsync("service/methodB", requestObject);
if (response.IsSuccessStatusCode)
{
var data = response.Content.ReadAsStringAsync().Result;
serviceResponse = JsonConvert.DeserializeObject<ServiceResponse>(data);
}
}
}
}
catch (Exception ex)
{
throw
}
return serviceResponse;
}
如果我提供这样的安全协议,它将起作用
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
我也尝试了邮递员的请求,但没有失败。所以现在很困惑,因为如果从邮递员那里工作,那么理想情况下它不是 WebApp 设置问题
解决方案
TLS 1.0 不再是默认设置。在发出请求之前添加此行:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
参考这个问题。
更新:
但我的疑问是为什么其他网络应用程序没有失败相同的代码?
发现问题,是因为webconfig中的目标框架是4.5.2。
<compilation targetFramework="4.7.2"></compilation>
<httpRuntime targetFramework="4.7.2" />
推荐阅读
- dart - 如何检查 Dart 中是否存在具有给定 pid 的进程?
- python - 在python中替换双括号之间的单词
- svelte - 是否可以在 svelte 3 中创建自定义生命周期?
- python - 散点图 Python Pandas
- html - 文本旁边的位置图标
- docker - 如何使入口点运行启动服务脚本而不退出docker-compose中的容器?
- laravel - Laravel 在 config/app.php 正确代码中设置语言环境
- twitter-bootstrap - 调整大小问题:带有 centerPadding 的光滑滑块,但滑动它是一个引导容器
- sql - 根据 SQL Select 语句返回的结果更新数据库列
- r - 如何在R中找到时间序列的平均月年化增长率?