3

每次我尝试向我的机器人发送消息时,或者在它连续回复 3 条消息后都会出现此错误。

try/catch在获取异常的代码周围放置了一个(来自对 的调用context.PostAsync),并将其记录在我的 Application Insights 实例中:

An error occurred while sending the request.
Unable to connect to the remote server
An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:9000

当然,我的代码中没有localhost任何内容……其他人看到了吗?

发生错误时正在运行的代码:

var j = JToken.Parse(responseJson);
foreach (var b in j["value"])
{
    await context.PostAsync($"{b.Value<string>("id")} - {b.Value<string>("name")}");
}

当我在本地运行机器人并使用模拟器进行测试时,我得到了 3 个项目输出,但在 4 日得到了 500 个项目(这不是格式错误,导致 json 解析失败)。

当我发布到 Azure 应用服务时,我收到 500 错误,没有任何输出。

4

3 回答 3

3

我们在我们的应用程序中遇到了类似的问题。通过LuisResult在我们的对话类中没有派生自LuisDialog.

我猜因为该类被标记为Serializable它试图序列化所有属性并且LuisResult无法序列化。

这是一个代码片段:

改变:

[Serializable]
public class YourDialog : LuisDialog<MySerializableClass>
{
    private LuisResult _myPrivateProp;
}

到:

[Serializable]
public class YourDialog : LuisDialog<MySerializableClass>
{
    private string _myPrivateProp;//or whatever
}
于 2016-04-22T09:19:08.373 回答
0

您是否通过模拟器连接到部署的服务?

如果是这样的话,可能会产生这个错误,因为当我们看到来自 channelId="emulator" 的消息时,异步消息被路由到http://localhost:9000。这将导致使用此端口。

要对其部署进行测试,您应该从机器人配置页面上的测试窗口开始,或使用网络聊天控件。

于 2016-04-13T16:04:13.153 回答
0

我还面临“500 内部服务器错误”更新到最新的“Bot Framework Emulator”解决了我的问题。

链接到 Bot 框架模拟器

文档

希望这可以帮助。

于 2016-11-26T14:41:30.893 回答