2017-04-09 38 views
0

我已将我的bot应用程序连接到Azure发布的直接线路API。我目前正在使用命令行客户端应用程序,bot框架模拟器以及我的机器人的dev.botframework.com主页来测试应用程序。使用GET请求导致僵尸程序对话框失败

一切正常,直到我尝试提交GET请求到REST API。我已经在单独的项目中测试了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调试一个项目一个简单的方法行代码?

+0

您的意思是说您已经为Azure部署了一个webapi应用程序,该应用程序提供了调用[Direct Line REST API](https://docs.botframework.com/en-us/restapi/directline/)的自定义端点?您是否尝试过使用[Fiddler](http://www.telerik.com/fiddler)在您的客户端应用程序上捕获网络软件包,或者利用[远程调试](https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-dotnet-troubleshoot-visual-studio#a-nameremotedebugaremote-debugging-web-apps)。另外,详细的错误信息和堆栈跟踪是什么? –

+0

这是来自MSFT部署到Azure的bot框架的bot应用程序。使用我的客户端应用程序,我可以通过直接线路REST API将消息发送到“智能机器人”。问题是发送一条消息“用帐户x登录”bot应用程序,然后创建一个httpClient来认证我自己的REST API。问题是调用'var response = client.GetAsync(new Uri(“someUrl.com/api/v1/auth”))。结果;'结果在'POST请求到“botendpointurl.com”失败[500]内部服务器错误客户端应用程序我看不到bot应用程序的状态,因为它运行在azure上 – Teragon

+0

您的意思是您引用bot应用程序示例并将其部署到Azure Web应用程序,如果是这样,您能否提供示例链接?我的理解是,你使用用户信息与你的bot应用程序(web app back-end)进行请求,然后通过基本认证向你的自定义rest api发出一个请求,因为你找到了代码行,你可以用'try捕获详细的错误消息(内部异常,堆栈跟踪)并将其输出到您的客户端应用程序,或者参考我之前的评论中的远程调试**链接,以调试托管在Azure Web应用程序上的bot应用程序 –

回答

0

System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:试图通过其访问权限的ip地址

不允许的方式来访问一个插座

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

enter image description here

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