Bots FormBuilder代码执行突然跳到FormCompletion委托

Bots FormBuilder代码执行突然跳到FormCompletion委托,bots,botframework,formbuilder,Bots,Botframework,Formbuilder,我在Bot框架应用程序中有以下代码。 您可以在下面的代码中看到我对ValidateStartDate委托进行了注释,其背后的原因是,如果我在formflow中包含委托,那么在委托执行后,代码直接跳到“context.Call(Booking,BookingComplete);”的BookingComplete委托,即对话结束。但理想情况下,它应该执行表单生成器中的其余字段。 请注意,这里StartDate的类型为String,我正在手动验证日期部分。此外,在代码执行过程中没有出现可见的异常 pu

我在Bot框架应用程序中有以下代码。 您可以在下面的代码中看到我对ValidateStartDate委托进行了注释,其背后的原因是,如果我在formflow中包含委托,那么在委托执行后,代码直接跳到“context.Call(Booking,BookingComplete);”的BookingComplete委托,即对话结束。但理想情况下,它应该执行表单生成器中的其余字段。 请注意,这里StartDate的类型为String,我正在手动验证日期部分。此外,在代码执行过程中没有出现可见的异常

public static IForm<ConferenceBooking> BuildForm()
{
     return new FormBuilder<ConferenceBooking>().Message("Tell me meeting details!")
    .Field(nameof(title))
    .Field(nameof(StartDate))//, validate: ValidateStartDate
    .Field(nameof(EntryTime), validate:ValidateCallTime)
    .Build();
}
publicstaticiformbuildform()
{
返回新的FormBuilder()。消息(“告诉我会议详细信息!”)
.字段(名称(标题))
.Field(nameof(StartDate))/,validate:ValidateStartDate
.字段(名称(EntryTime),验证:ValidateCallTime)
.Build();
}
下面是StartDate的代表部分

private static Task<ValidateResult> ValidateStartDate(ConferenceBooking state, object response)
{
var result = new ValidateResult();
DateTime startDt = Convert.ToDateTime(GetDate(Convert.ToString(response)));
if (startDt == null || startDt == DateTime.MinValue)
{
    result.IsValid = false;
    result.Feedback = "I could not understand this format.";
}
else if (startDt.Date < DateTime.Now.Date)
{
    result.IsValid = false;
    result.Feedback = "Sorry, back dated bookings are not allowed";
}
else
{
    result.IsValid = true;
    result.Value = startDt;
}
  return Task.FromResult(result);
}
私有静态任务ValidateStartDate(ConferenceBooking状态,对象响应)
{
var result=new ValidateResult();
DateTime startDt=Convert.ToDateTime(GetDate(Convert.ToString(response));
if(startDt==null | | startDt==DateTime.MinValue)
{
result.IsValid=false;
result.Feedback=“我无法理解此格式。”;
}
else if(startDt.Date
我以前也注意到过这种行为,这总是由异常引起的。FormBuilder将捕获所有异常,并在catch块中退出表单。这就是为什么你没有看到任何异常出现的原因。尝试一步一步地检查您的代码或从表单外部执行它。

您的ValidateCallTime方法是什么,也请发布ConferenceBooking和GetDate的代码。