在一段时间不使用后,Bot响应有滞后

时间:2017-02-28 12:29:20

标签: azure-web-sites botframework

我有一个永远的问题,我无法解决 似乎我的dll在一段时间后从内存中卸下了 例如,当我在30分钟内不使用bot,然后重用时,它需要一些时间才能响应,比如重新部署或者dll不再在RAM中并且在响应之前重新加载。
有没有办法解决机器人暂时不使用时的延迟?

更新:3/1/17

激活选项'永远在',有必要传递付费优惠。 由于我仍然在开发,我不能传递这个提议。 我找到了一个解决方案,通过创建一个每分钟发送一次消息的脚本,让我的Bot保持活动模式。 我的脚本在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 ...

如何在Bot上正确登录并在其Url上发送消息 (http://emiko.azurewebsites.net/api/messages

1 个答案:

答案 0 :(得分:1)

正如官方document中提到的始终开启

  

默认情况下,如果网络应用闲置一段时间,则会将其卸载。这使系统可以节省资源。在“基本”或“标准”模式下,您可以启用“始终开启”以始终加载应用程序。如果您的应用运行连续的Web作业,则应启用Always On,否则Web作业可能无法可靠运行。

  

要激活“始终开启”选项,必须传递付费优惠。由于我仍然在开发,我不能传递这个提议。

根据您的情况,我假设您可以定期发送请求以确保您的网站处于活动状态,这里有一些您可以引用它们的教程(tutorial1tutorial2)。