This repository contains sample code for the article "Streaming Responses in ASP.NET Core" in the ASP.NET Core documentation.
The project contains two implementations of the definition of a simple ASP.NET Core web site that contains endpoints that sing a song:
AsynchronousWithSystemTextJson
SynchronousWithNewtonsoftJson
These endpoints sing the song indefinitely, streaming the song repeatedly until the client disconnects. This acts as a demonstration of how to implement streaming endpoints with ASP.NET Core.
This project can be compiled in Visual Studio, or with the dotnet
command-line tool:
dotnet build
Within Visual Studio, this project will by default run using IIS Express. This can be changed to self-host with Kestrel.
The project can also be launched with the dotnet
command-line tool, which self-hosts with Kestrel:
dotnet run
There are two examples that show alternative implementations. With an example server running, you can use a browser window or command-line tools to inspect output from the hosted endpoints. Simply append the desired endpoint onto the base URI displayed in the console where the server is running.
- Browser: Simply browse to the URL. Some browsers may spool up some of the response before they begin displaying it in realtime.
- PowerShell: There is no built-in function in PowerShell that can display a web response in realtime.
- Curl:
curl URL --no-buffer
- NB: Windows 10 ships with a native port of
curl.exe
-- specify the extension if calling from PowerShell, since PowerShell by default aliasescurl
toInvoke-WebRequest
.
- NB: Windows 10 ships with a native port of
- Wget:
wget -qO- URL
When running, this project presents a web server with a single endpoint.
- Controller endpoint:
/v1/sing
This project hosts itself on port 5100. A sample URL is:
When running, this project presents a web server with two endpoints. These endpoints have identical behaviour, but one is implemented using an ASP.NET Core Controller and the other using ASP.NET Core Middleware.
- Controller Endpoint:
/v1/sing
- Middleware Endpoint:
/middleware/sing
This project hosts itself on port 5000. Sample URLs are: