Skip to content

SseItem response in Results.ServerSentEvents #64183

@WeihanLi

Description

@WeihanLi

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

Results.ServerSentEvents implemented on #56172

When I use IAsyncEnumerable<SseItem<DateTimeOffset>> as the response type, it seems the response is not as expected

The response I got now with .NET 10 RC 2:

event: heartbeat
data: {"data":"2025-10-28T21:41:13.2483569+08:00","eventType":"message","eventId":"019a2b0d25a07d958cfe5ad7bbfb747a","reconnectionInterval":null}

event: heartbeat
data: {"data":"2025-10-28T21:41:14.2626512+08:00","eventType":"message","eventId":"019a2b0d299676098e504358dd0aa140","reconnectionInterval":null}

The message on Chrome Dev Tool > Network > EventStream panel

Image

Expected Behavior

According to the spec from https://html.spec.whatwg.org/multipage/server-sent-events.html#event-stream-interpretation

Image

It should be as follows:

id: 019a2b0d25a07d958cfe5ad7bbfb747a
event: heartbeat
data: 2025-10-28T21:41:13.2483569+08:00

id: 019a2b0d299676098e504358dd0aa140
event: heartbeat
data: 2025-10-28T21:41:14.2626512+08:00

Steps To Reproduce

var app = WebApplication.Create();
app.MapGet("/sse", (CancellationToken cancellationToken) => 
            Results.ServerSentEvents(GetSseItem(cancellationToken), "heartbeat"));
await app.RunAsync();

static async IAsyncEnumerable<SseItem<DateTimeOffset>> GetSseItem(
    [EnumeratorCancellation]CancellationToken cancellationToken
)
{
    while (!cancellationToken.IsCancellationRequested)
    {
        await Task.Delay(1000, cancellationToken);
        yield return new SseItem<DateTimeOffset>(DateTimeOffset.Now)
        {
            EventId = Guid.CreateVersion7().ToString("N"),
            // ReconnectionInterval = TimeSpan.FromSeconds(10)
        };
    }
}

Exceptions (if any)

No response

.NET Version

10.0.100-rc.2.25502.107

Anything else?

ASP.NET Core 10 RC 2

dotnet --info output:

.NET SDK:
 Version:           10.0.100-rc.2.25502.107
 Commit:            89c8f6a112
 Workload version:  10.0.100-manifests.4d32cd9e
 MSBuild version:   18.0.0-preview-25502-107+89c8f6a11

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.26200
 OS Platform: Windows
 RID:         win-x64
 Base Path:   C:\Program Files\dotnet\sdk\10.0.100-rc.2.25502.107\

.NET workloads installed:
There are no installed workloads to display.
Configured to use workload sets when installing new manifests.
No workload sets are installed. Run "dotnet workload restore" to install a workload set.

Host:
  Version:      10.0.0-rc.2.25502.107
  Architecture: x64
  Commit:       89c8f6a112

.NET SDKs installed:
  6.0.428 [C:\Program Files\dotnet\sdk]
  8.0.206 [C:\Program Files\dotnet\sdk]
  8.0.415 [C:\Program Files\dotnet\sdk]
  9.0.111 [C:\Program Files\dotnet\sdk]
  9.0.205 [C:\Program Files\dotnet\sdk]
  9.0.306 [C:\Program Files\dotnet\sdk]
  10.0.100-rc.2.25502.107 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 9.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 9.0.10 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 10.0.0-rc.2.25502.107 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.21 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 9.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 9.0.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 10.0.0-rc.2.25502.107 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 8.0.21 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 9.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 9.0.10 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 10.0.0-rc.2.25502.107 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found:
  x86   [C:\Program Files (x86)\dotnet]
    registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]

Environment variables:
  DOTNET_CLI_TELEMETRY_OPTOUT              [1]
  DOTNET_PRINT_TELEMETRY_MESSAGE           [false]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-minimalIncludes minimal APIs, endpoint filters, parameter binding, request delegate generator etc

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions