我有这段代码在c# API中运行Azure认知服务的计算机视觉API。我已经在Dev中运行了几个星期,目前一切都很好。然而,我把它移到我们的QA环境中,突然我得到:
InnerException {"无法从传输连接读取数据:远程主机强制关闭现有连接。"}系统。异常{System.IO.IOException}
这告诉我服务是活的,但不可用。imageURL是一个完全形成的公共URL(一个图像)。
string imageURL = _storageAccount.BlobStorageUri.PrimaryUri.AbsoluteUri + container + "/" + fullFileName;
// Create a client
ComputerVisionClient client = Authenticate(cvEndpoint, cvSubscriptionKey);
// Creating a list that defines the features to be extracted from the image.
List<VisualFeatureTypes?> features = new List<VisualFeatureTypes?>()
{
VisualFeatureTypes.Categories, VisualFeatureTypes.Description,
VisualFeatureTypes.Faces, VisualFeatureTypes.ImageType,
VisualFeatureTypes.Tags, VisualFeatureTypes.Adult,
VisualFeatureTypes.Color, VisualFeatureTypes.Brands,
VisualFeatureTypes.Objects
};
// Analyze an image to get features and other properties.
ImageAnalysis results = await client.AnalyzeImageAsync(imageURL, features); //fails here
这是直接来自微软文档的相当普通的代码。有人知道这里会发生什么吗?
我通过在我的API中添加TLS 1.1和1.2来修复此问题。不知道为什么默认是1.0,但它是,认知服务API至少需要1.2。
修复方法是添加这一行:
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
找到了解决方案:c# HttpClient一个现有的连接被远程主机强制关闭