Skip to content

Creating Spans for SignalR messages sent over Web Sockets #84

Open
@js8080

Description

@js8080

I'm using opentracing-csharp-netcore in an ASP.NET Core (3.1) application that receives SignalR requests via WebSockets.

In my Startup.ConfigureServices() method I setup OpenTracing as follows:

            services.AddOpenTracingCoreServices(otBuilder =>
            {
                otBuilder.AddAspNetCore()
                    .ConfigureAspNetCore(options =>
                    {
                        var ignoredRequestPaths = tracingOptions.IgnoredRequestPaths;
                        options.Hosting.IgnorePatterns.Add(ctx => (ignoredRequestPaths != null) ? ignoredRequestPaths.Contains(ctx.Request.Path) : false);

                        // options.Hosting.OnError = (span, exception, context) => {} -- this is only thrown when there is an unhandled exception, not when an HTTP error is purposefully returned by a controller

                        // This sets the main-level Span Operation Name which normally has a less than useful value in my experience.
                        options.Hosting.OperationNameResolver = (httpContext) =>
                        {
                            return httpContext.Request.Path.Value;
                        };
                    })
                    .AddCoreFx()
                    .AddEntityFrameworkCore()
                    .AddLoggerProvider();
            });

Unfortunately, what I am finding is that SignalR via WebSockets requests received do not cause a Span to be created. Meanwhile, regular HTTP web requests work fine.

Is there some limitation to DiagnosticListeners that don't support SignalR over Web Sockets or does opentracing-csharp-netcore just not support listening for Web Socket events?

Sorry I am not an expert in the terminology for SignalR over Web Sockets or the inner workings of opentracing-charp-netcore but hopefully I got my question across despite that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions