System.Collections.Generic.KeyNotFoundException 使用 Microsoft Bot Framework
System.Collections.Generic.KeyNotFoundException with Microsoft Bot Framework
我正在使用 Microsoft Bot Framework 创建一个使用 LuisDialog 的非常简单的机器人。但是我一直收到 System.Collections.Generic.KeyNotFoundException。
这是我的控制器:
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity, () => new QuotesDialog());
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
这是我的对话:
[Serializable]
[LuisModel("MyModelIdGoesHere", "MySubscriptionKeyGoesHere")]
public class QuotesDialog : LuisDialog<object>
{
[LuisIntent("CheckQuote")]
public async Task CheckQuote(IDialogContext context, LuisResult result)
{
await context.PostAsync("Hello you!");
context.Wait(MessageReceived);
}
[LuisIntent("None")]
public async Task None(IDialogContext context, LuisResult result)
{
await context.PostAsync("I'm sorry. I didn't get that.");
context.Wait(MessageReceived);
}
}
如果我使用旧版本的 Bot Framework,例如 3.0.0,我会收到以下错误:
500内部服务器错误
{
"message": "An error has occurred."
}
但是,如果我更新到最新的稳定版本 (3.2.1),则会收到以下 "System.Collections.Generic.KeyNotFoundException" 类型的错误:
"Exception: System.Collections.Generic.KeyNotFoundException: The given
key was not present in the dictionary. at
System.Collections.Generic.Dictionary2.get_Item(TKey key) at
Microsoft.Bot.Builder.Dialogs.LuisDialog "
完整的堆栈跟踪在这里:
我尝试在另一个解决方案上创建一个新项目,但我得到了同样的错误。我尝试通过 nuget 安装不同版本的 Bot Framework,但就像我之前所说的那样,无论哪种方式,我仍然会收到错误消息。到目前为止,我对 Bot Framework 的经验真的很少,所以我真的不知道还能尝试什么。
你能再试一次在 None 方法之上添加以下内容吗?
[LuisIntent("")]
您看到的错误通常发生在 LuisDialog 无法根据收到的消息解析要执行的方法(意图)时。
我怀疑当 LuisDialog 寻找空意图时 here 提出了这个问题。
handler = this.handlerByIntent[string.Empty];
我正在使用 Microsoft Bot Framework 创建一个使用 LuisDialog 的非常简单的机器人。但是我一直收到 System.Collections.Generic.KeyNotFoundException。
这是我的控制器:
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity, () => new QuotesDialog());
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
这是我的对话:
[Serializable]
[LuisModel("MyModelIdGoesHere", "MySubscriptionKeyGoesHere")]
public class QuotesDialog : LuisDialog<object>
{
[LuisIntent("CheckQuote")]
public async Task CheckQuote(IDialogContext context, LuisResult result)
{
await context.PostAsync("Hello you!");
context.Wait(MessageReceived);
}
[LuisIntent("None")]
public async Task None(IDialogContext context, LuisResult result)
{
await context.PostAsync("I'm sorry. I didn't get that.");
context.Wait(MessageReceived);
}
}
如果我使用旧版本的 Bot Framework,例如 3.0.0,我会收到以下错误: 500内部服务器错误 { "message": "An error has occurred." }
但是,如果我更新到最新的稳定版本 (3.2.1),则会收到以下 "System.Collections.Generic.KeyNotFoundException" 类型的错误:
"Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary2.get_Item(TKey key) at Microsoft.Bot.Builder.Dialogs.LuisDialog "
完整的堆栈跟踪在这里:
我尝试在另一个解决方案上创建一个新项目,但我得到了同样的错误。我尝试通过 nuget 安装不同版本的 Bot Framework,但就像我之前所说的那样,无论哪种方式,我仍然会收到错误消息。到目前为止,我对 Bot Framework 的经验真的很少,所以我真的不知道还能尝试什么。
你能再试一次在 None 方法之上添加以下内容吗?
[LuisIntent("")]
您看到的错误通常发生在 LuisDialog 无法根据收到的消息解析要执行的方法(意图)时。
我怀疑当 LuisDialog 寻找空意图时 here 提出了这个问题。
handler = this.handlerByIntent[string.Empty];