Ответы бота с лагом после определенного времени неиспользования
У меня есть постоянная проблема, которую я не мог решить.
Кажется, моя dll была выгружена из памяти через некоторое время.
Например, когда я не использую бота в течение 30 минут, а затем снова использую его, перед ответом требуется некоторое время, как если бы он был повторно развернут или dll больше не находился в ОЗУ и был перезагружен до ответа.
Есть ли способ исправить отставание, когда бот некоторое время не используется?
обновление: 01.03.17
Чтобы активировать опцию "Всегда включен", необходимо передать платное предложение. Поскольку я все еще там, разработчик, я не могу передать это предложение. Я нашел решение, чтобы сохранить моего бота в живом режиме, создав скрипт, который будет отправлять сообщения каждую минуту. Мой сценарий находится в C#, и когда я выполняю это, я получаю ошибку авторизации.
var authValue = new AuthenticationHeaderValue ("Basic", Convert.ToBase64String (Encoding.UTF8.GetBytes ($ "{MyMicrosoftAppId}: {MyMicrosoftAppPassword}")));
var client = new HttpClient()
{
DefaultRequestHeaders = { Authorization = authValue }
};
var jsonObject = new Rootobject()
{
type = "message",
id = "0a24ca1428074419a1679b37e0e3dd39",
timestamp = DateTime.Now,
serviceUrl = "http://localhost:9000/",
channelId = "emulator",
from = new From()
{
id = "2c1c7fa3",
name = "User1"
},
conversation = new Conversation()
{
isGroup = false,
id = "8a684db8",
name = "Conv1"
},
recipient = new Recipient()
{
id = "56800324",
name = "Bot1"
},
text = "ping",
attachments = new object[0],
entities = new object[0]
};
var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json");
var result = client.PostAsync("http://emiko.azurewebsites.net/api/messages", content).Result;
result.ToString();
Но я получаю ошибку авторизации: StatusCode: 401, ReasonPhrase: "Unauthorized", Version: 1.1, Content: System.Net.Http.StreamContent...
Как правильно войти в систему на Боте и отправить сообщение на его URL ( http://emiko.azurewebsites.net/api/messages)
1 ответ
Как уже упоминалось в официальном документе о Always On:
По умолчанию веб-приложения выгружаются, если они простаивают в течение некоторого периода времени. Это позволяет системе экономить ресурсы. В базовом или стандартном режиме вы можете включить Always On, чтобы приложение постоянно загружалось. Если ваше приложение выполняет непрерывные веб-задания, вам следует включить Always On, иначе веб-задания могут работать ненадежно.
Чтобы активировать опцию "Всегда включен", необходимо передать платное предложение. Поскольку я все еще там, разработчик, я не могу передать это предложение.
Исходя из вашего сценария, я предположил, что вы можете периодически отправлять запросы, чтобы убедиться, что ваш сайт жив, вот несколько учебных пособий, на которые вы можете обратиться к ним ( tutorial1 и tutorial2).