C#Bot框架-未找到资源错误

C#Bot框架-未找到资源错误,c#,asp.net,botframework,chatbot,C#,Asp.net,Botframework,Chatbot,我已经使用bot框架构建了一个小型的基本web bot应用程序,并希望将其部署到Azure上。我已经完成了所有的步骤,在Azure Portal的“Web聊天测试”下也可以正常工作,但是当我打开我的机器人的端点时 我听到一个错误说 The requested resource does not support http method 'GET' 谁能帮帮我,我根本无法调试我的应用程序。我也在emulator上进行了测试,它也工作得很好。是的,URL只适用于POST请求,而不是GET请求,因为

我已经使用bot框架构建了一个小型的基本web bot应用程序,并希望将其部署到Azure上。我已经完成了所有的步骤,在Azure Portal的“Web聊天测试”下也可以正常工作,但是当我打开我的机器人的端点时

我听到一个错误说

The requested resource does not support http method 'GET'
谁能帮帮我,我根本无法调试我的应用程序。我也在emulator上进行了测试,它也工作得很好。

是的,URL只适用于
POST
请求,而不是
GET
请求,因为您将用户的消息发布到机器人,而不是GET,您可以在
MessagesController
代码中看到这一点

也就是说,如果你想在本地测试你的机器人,你必须使用模拟器。你也可以看一看

现在,如果你想将机器人发布到世界上,以便其他人可以看到并使用它,那么这就是频道的作用所在。将频道视为一种媒介,通过该媒介,您可以让您的BOT为其他用户提供更好的用户体验。 有多个频道可供发布bot,是的,您可以在所有频道中发布相同的bot。只有一个通道,默认情况下已启用,查看方式为:

  • 在Azure门户中打开您的机器人,然后单击频道
  • 单击编辑查看网络聊天频道
  • 在“密钥”下,单击第一个密钥的“显示”
  • 复制密钥嵌入代码
  • 单击“完成”
  • 因此,嵌入的代码实际上是一个iframe,您可以将其放置在您的网站中或与希望使用您的机器人的其他人共享。或者您也可以使用iFrame的
    src
    直接到达bot


    同样,这只是一个频道。您可以查看文档,了解在Skype、Microsoft团队、电子邮件、Facebook、Slack、Telegrame等更多渠道中启用bot的步骤。

    如果您检查
    消息控制器的代码,您会发现控制器中定义了以下操作:,它只接受POST请求并从请求体读取
    活动的值,不支持http方法“GET

    /// <summary>
    /// POST: api/Messages
    /// Receive a message from a user and reply to it
    /// </summary>
    public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
    {
        if (activity.Type == ActivityTypes.Message)
        {
            await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
        }
        else
        {
            HandleSystemMessage(activity);
        }
        var response = Request.CreateResponse(HttpStatusCode.OK);
        return response;
    }
    
    //
    ///帖子:api/Messages
    ///接收来自用户的消息并回复
    /// 
    公共异步任务发布([FromBody]活动)
    {
    if(activity.Type==ActivityTypes.Message)
    {
    wait Conversation.sendaync(活动,()=>newdialogs.RootDialog());
    }
    其他的
    {
    HandleSystemMessage(活动);
    }
    var response=Request.CreateResponse(HttpStatusCode.OK);
    返回响应;
    }
    
    噢,现在我了解了控件在整个应用程序中的流动情况。谢谢,谢谢,成功了。另外,当我加载嵌入式网站时,会话更新类型的新活动不应该被触发吗?我的情况不是这样。只有在我输入内容并且在我的信息发布之前,它才会被解雇。