Bot框架对话框中的错误处理

1 c# botframework

如何捕获对话框中的所有异常?是否有类似ASP.NET异常过滤器的东西?我想根据异常类型向用户发送不同的消息.

谢谢

Nic*_*s R 5

你可以使用的事实是正确的ExceptionFilter.

你只需要做以下事情:

创建ExceptionFilter类,例如强制跟踪Application Insights中的异常(或者在您的情况下处理特定的异常类型):

using Microsoft.ApplicationInsights;
using System.Net.Http;
using System.Web.Http.Filters;

namespace BotDemo.App_Start
{
    public class ExceptionFilter : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext ctx)
        {
            HandleError(ctx);
        }

        private static void HandleError(HttpActionExecutedContext ctx)
        {
            ctx.Response = new HttpResponseMessage(System.Net.HttpStatusCode.InternalServerError)
            {
                Content = new StringContent(ctx.Exception.Message)
            };

            var client = new TelemetryClient();
            client.TrackException(ctx.Exception);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记定义异常过滤器在你的Application_Start():

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configuration.Filters.Add(new ExceptionFilter());
         ...
Run Code Online (Sandbox Code Playgroud)

而已.

实际上Bot Framework模板使用的是ASP.Net,因此您拥有所有正常功能.