[英]Connection issue with TLS 1.1 and 1.2 - Azure web app
在我的应用程序中,我正在从另一个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;
请参考此问题 。
更新:
但是我的疑问是,为什么其他Web应用程序不能使用相同的代码?
发现了问题,这是由于webconfig中的目标框架是4.5.2。
<compilation targetFramework="4.7.2"></compilation>
<httpRuntime targetFramework="4.7.2" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.