你可以使用的事实是正确的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,因此您拥有所有正常功能.