C# 如何在Azure应用程序服务中显示用户友好的错误

C# 如何在Azure应用程序服务中显示用户友好的错误,c#,azure,error-handling,azure-web-app-service,azure-application-insights,C#,Azure,Error Handling,Azure Web App Service,Azure Application Insights,我已经在Azure应用程序服务中部署了web api(C#.Net framework 4.7.2)。应用程序中捕获的所有异常都记录到application Insights中。代码运行良好,用户当前正在使用它。问题是,代码中抛出的任何异常都会使用堆栈跟踪信息显示给最终用户。 我希望避免向用户显示堆栈信息和不友好的错误。我可以实现自定义错误页面来重定向用户以显示用户友好的消息 在实现自定义错误页面之前,如果应用程序中抛出了任何应用程序异常,是否可以使用Azure显示用户友好的错误消息。我在谷歌上

我已经在Azure应用程序服务中部署了web api(C#.Net framework 4.7.2)。应用程序中捕获的所有异常都记录到application Insights中。代码运行良好,用户当前正在使用它。问题是,代码中抛出的任何异常都会使用堆栈跟踪信息显示给最终用户。 我希望避免向用户显示堆栈信息和不友好的错误。我可以实现自定义错误页面来重定向用户以显示用户友好的消息

在实现自定义错误页面之前,如果应用程序中抛出了任何应用程序异常,是否可以使用Azure显示用户友好的错误消息。我在谷歌上搜索了很长一段时间,但找不到任何可靠的方便信息

ErrorHandler.cs:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] 
public class AiHandleErrorAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
        {
            //If customError is Off, then AI HTTPModule will report the exception
            if (filterContext.HttpContext.IsCustomErrorEnabled)
            {   
                var ai = new TelemetryClient();
                ai.TrackException(filterContext.Exception);
            } 
        }
        base.OnException(filterContext);
    }
}
Web.config

<system.web>
<customErrors mode="Off" />
<compilation debug="true" targetFramework="4.7.2" />
<httpRuntime targetFramework="4.5" />
<httpModules>
  <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>


除非我遗漏了什么,否则如果你的后端API抛出异常(http 500状态码),而不是在Azure应用程序服务上执行操作,那么在前端显示用户友好的消息不是更容易吗?我假设你有一个web API,前端正在调用它(Angular、React、Vue等)。@rohit不,我们没有前端。。这是后端服务。。这个web api被第三方应用程序使用。你可以阅读这篇文章,希望它对你有用。