1

我在记录 AWS X-Ray 异常时遇到问题。

这是 Application_Error 中的内容:

protected void Application_Error(object sender, EventArgs e)
    {
        Exception exception = Server.GetLastError();

        if (exception != null)
        {
            var InnerException = exception.InnerException;

            Session["error"] = String.Format("{0} ::: {1}", exception.Message, exception.StackTrace);
            try
            {
                AWSXRayRecorder.Instance.AddException(exception);
            }
            catch (Exception ee)
            {
                // ignore errors for XRay
            }
        }
        Server.ClearError();

    }

但是,在 AddException 行上抛出一个错误,指出“CallContext 中不存在段”

第一次尝试让 X 射线进行。有什么建议吗?是否有任何人遇到过的教程可能会有所帮助?

4

2 回答 2

2

设置AWS_XRAY_CONTEXT_MISSINGLOG_ERROR可以停止 AddException 以引发“段不存在”异常,但这也意味着没有任何内容被记录到 XRay 服务。

要真正解决问题,您应该在逻辑的开头创建一个 Segment。在编写 ASP.NET Web API 应用程序时,您可以添加一个拦截器来为每个传入请求自动创建一个段。您可以尝试一个示例应用程序。

https://github.com/awslabs/aws-xray-dotnet-webapp

于 2017-07-18T20:25:44.507 回答
2

XRay 的默认行为是在您尝试访问 a 时引发异常Segment,并且当前上下文中当前未设置任何异常。您可以看到环境变量文档中提到的默认行为

正如该文档指出的那样,您可以AWS_XRAY_CONTEXT_MISSING在 EC2 实例上设置环境变量LOG_ERROR以调整此行为。

或者,您可以使用该ContextMissingStrategy属性在代码中更改此行为。 文档链接

于 2017-07-18T18:24:48.147 回答