Я создал веб-приложение ASP Net Core (2.0) с подключенными службами Azure, при тестировании на локальном хосте оно работает идеально, но при публикации в IIS выдает следующую ошибку:
Произошло необработанное исключение при обработке запроса. SocketException: ошибка произошла во время попытки подключения, потому что подключенная сторона не ответила должным образом после определенного периода времени, или произошла ошибка в установленном соединении, так как подключенный хост не смог ответить 40.112.254.71:443
Я отправляю txt-файл из представления в контроллер и отправляю в службу Azure для анализа, это метод записи:
[HttpPost("Analyze_v2")]
public JsonResult Analyze_v2(IFormFile archivo)
{
List<string> result = new List<string>();
using (var reader = new StreamReader(archivo.OpenReadStream()))
{
while (reader.Peek() >= 0)
result.Add(reader.ReadLine());
}
List<TextAnalyzeModel> data = new List<TextAnalyzeModel>();
for (int i = 0; i < result.Count; i++)
{
TextAnalyzeModel model = new TextAnalyzeModel();
model.TextStr = result.ElementAt(i);
if (!string.IsNullOrWhiteSpace(model.TextStr))
{
ITextAnalyticsAPI client = this.GetTextAnalyzeClient(new AsyncHandler());
model.LanguageAnalyzeResult = client.DetectLanguage(
new BatchInput(
new List<Input>()
{
new Input(i.ToString(),model.TextStr)
}));
model.SentimentAnalyzeResult = client.Sentiment(
new MultiLanguageBatchInput(
new List<MultiLanguageInput>()
{
new MultiLanguageInput(
model.LanguageAnalyzeResult.Documents[0].DetectedLanguages[0].Iso6391Name,
i.ToString(),
model.TextStr)
}));
data.Add(model);
}
}
return Json(data);
}
Это метод GetTextAnalyzeClient:
private ITextAnalyticsAPI GetTextAnalyzeClient(DelegatingHandler handler)
{
string key = configuration.GetSection("CognitiveServices")["TextAnalytics:ServiceKey"];
ITextAnalyticsAPI client = new TextAnalyticsAPI(handlers: handler);
client.SubscriptionKey = key;
client.AzureRegion = Microsoft.Azure.CognitiveServices.Language.TextAnalytics.Models.AzureRegions.Westus;
return client;
}
А это класс AsyncHandler:
class AsyncHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
// Call the inner handler.
var response = await base.SendAsync(request, cancellationToken);
return response;
}
}
Я тестировал на разных портах и с той же проблемой, на localhost работает нормально, а при публикации выдает исключение
Любые идеи будут полезны.