使用GET请求导致僵尸程序对话失败

时间:2017-04-09 00:13:41

标签: c# rest http azure botframework

我已将我的bot应用程序连接到与Azure一起发布的直接API。我目前正在使用命令行客户端应用程序,bot框架模拟器和我的bot的dev.botframework.com主页测试应用程序。

在我尝试向REST API提交GET请求之前,一切正常。我在一个单独的项目中测试了GET API请求,它正常工作,GET请求在实现直接线路通道之前工作。在机器人端使用直接线进行http请求时,我需要注意什么?

有问题的代码

using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", headerParam);
                var response = client.GetAsync(new Uri("someUrl.com/api/v1/auth")).Result;
                string content = response.Content.ReadAsStringAsync().Result;
                var jo = JObject.Parse(content);
                this.token = jo["Result"]["Token"].ToString();
            }
            await context.PostAsync(this.token);

实际导致失败的行是

var response = client.GetAsync(new Uri("someUrl.com/api/v1/auth")).Result;

当项目发布到azure并运行直接API API时,还有一种更简单的方法来调试项目吗?

1 个答案:

答案 0 :(得分:0)

  

System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:尝试以其访问权限禁止的方式访问套接字ipaddress

我尝试在我的bot应用程序后端调用我的自定义REST API,然后我可以利用Remote debugging web apps从Azure Web应用程序上托管的bot应用程序中检索结果,如下所示:

enter image description here

在搜索相关问题后,我发现在创建新的传出连接时,当前应用服务计划的套接字数量有限制。您可以尝试扩展App Service计划或创建新的Web应用程序以隔离此问题。有关详细信息,您可以参考此类似的issue和此blog