Skip to content

Commit 2c98fbf

Browse files
committed
WN Update: SignalR ActivitySource
1 parent 551a690 commit 2c98fbf

File tree

3 files changed

+16
-59
lines changed

3 files changed

+16
-59
lines changed

aspnetcore/release-notes/aspnetcore-9.0.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ author: rick-anderson
44
description: Learn about the new features in ASP.NET Core 9.0.
55
ms.author: riande
66
ms.custom: mvc
7-
ms.date: 10/07/2024
7+
ms.date: 11/19/2024
88
uid: aspnetcore-9
99
---
1010
# What's new in ASP.NET Core 9.0

aspnetcore/release-notes/aspnetcore-9/includes/signalr-distributed-tracing-improvements.md

Lines changed: 0 additions & 37 deletions
This file was deleted.
Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
### Improved Activities for SignalR
22

3-
SignalR now has an ActivitySource named `Microsoft.AspNetCore.SignalR.Server` that emits events for hub method calls:
3+
SignalR now has an ActivitySource for both the hub server and client.
4+
5+
#### .NET SignalR server ActivitySource
6+
7+
The SignalR ActivitySource named `Microsoft.AspNetCore.SignalR.Server` emits events for hub method calls:
48

59
* Every method is its own activity, so anything that emits an activity during the hub method call is under the hub method activity.
610
* Hub method activities don't have a parent. This means they are not bundled under the long-running SignalR connection.
@@ -15,29 +19,19 @@ The following example uses the [.NET Aspire dashboard](/dotnet/aspire/fundamenta
1519

1620
Add the following startup code to the `Program.cs` file:
1721

18-
```csharp
19-
// Set OTEL_EXPORTER_OTLP_ENDPOINT environment variable depending on where your OTEL endpoint is
20-
var builder = WebApplication.CreateBuilder(args);
22+
[!code-csharp[](~/release-notes/aspnetcore-9/samples/SignalRChatTraceExample/Program.cs?name=snippet_trace_signalr_server&highlight=1,13-26)]
23+
24+
The following is example output from the Aspire Dashboard:
2125

22-
builder.Services.AddRazorPages();
23-
builder.Services.AddSignalR();
26+
:::image type="content" source="~/release-notes/aspnetcore-9/_static/signalr-activities-events.png" alt-text="Activity list for SignalR Hub method call events":::
2427

25-
builder.Services.AddOpenTelemetry()
26-
.WithTracing(tracing =>
27-
{
28-
if (builder.Environment.IsDevelopment())
29-
{
30-
// We want to view all traces in development
31-
tracing.SetSampler(new AlwaysOnSampler());
32-
}
28+
#### .NET SignalR client ActivitySource
3329

34-
tracing.AddAspNetCoreInstrumentation();
35-
tracing.AddSource("Microsoft.AspNetCore.SignalR.Server");
36-
});
30+
The SignalR ActivitySource named "Microsoft.AspNetCore.SignalR.Client" emits events for a SignalR client:
3731

38-
builder.Services.ConfigureOpenTelemetryTracerProvider(tracing => tracing.AddOtlpExporter());
39-
```
32+
* .NET SignalR client has an `ActivitySource` named "Microsoft.AspNetCore.SignalR.Client". Hub invocations now create a client span. Note that other SignalR clients, such as the JavaScript client, don't support tracing. This feature will be added to more clients in future releases.
33+
* Hub invocations on the client and server support [context propagation](https://opentelemetry.io/docs/concepts/context-propagation/). Propagating the trace context enables true distributed tracing. It's now possible to see invocations flow from the client to the server and back.
4034

41-
The following is example output from the Aspire Dashboard:
35+
Here's how these new activities look in the [.NET Aspire dashboard](https://learn.microsoft.com/dotnet/aspire/fundamentals/dashboard/overview?tabs=bash#standalone-mode):
4236

43-
:::image type="content" source="~/release-notes/aspnetcore-9/_static/signalr-activites-events.png" alt-text="Activity list for SignalR Hub method call events":::
37+
![SignalR distributed tracing in Aspire dashboard](~/release-notes/aspnetcore-9/_static/signalr-distributed-tracing-aspire-dashboard.png)

0 commit comments

Comments
 (0)