What Is the Purpose of the `samples` Directory in ASP.NET Core?
The samples directory in the dotnet/aspnetcore repository contains self‑contained example applications that demonstrate how to use framework features for learning, integration testing, and reference implementation.
The dotnet/aspnetcore repository organizes its codebase into modular components, each containing a dedicated samples folder. These directories house runnable projects that illustrate proper API usage and configuration patterns. Understanding the purpose of the samples directory in ASP.NET Core helps developers quickly grasp implementation details through working code rather than documentation alone.
Core Functions of the samples Directory
Learning and Documentation
Each sample serves as a practical tutorial that complements written documentation. The src/Servers/HttpSys/README.md explicitly references this purpose: "samples/: Contains samples showing how to use HTTP.sys." Similar references exist across SignalR, Kestrel, Security, and other components, providing developers with ready‑to‑run code that shows the correct way to configure and call ASP.NET Core APIs.
Integration Testing Support
Many integration tests reference sample projects via <ProjectReference> entries in solution files. These samples act as verification targets, ensuring that framework changes do not break real‑world usage patterns. By testing against actual sample applications rather than mock objects, the ASP.NET Core team validates end‑to‑end functionality.
Reference Implementations
Microsoft engineers and community contributors use these samples as canonical examples when building new features or diagnosing bugs. Located alongside the source code they demonstrate, these projects represent the authoritative "golden path" for implementing specific functionality such as HTTP/3 support or JWT‑Bearer authentication.
Key Sample Locations and Projects
Each major component maintains its own samples sub‑directory containing minimal, buildable projects:
- SignalR:
src/SignalR/samples/ClientSamplecontainsClientSample.csproj, demonstrating real‑time client connections. - Kestrel:
src/Servers/Kestrel/samples/Http3SampleAppincludesHttp3SampleApp.csprojfor HTTP/3 protocol scenarios. - HTTP.sys:
src/Servers/HttpSys/samples/HotAddSamplefeaturesHotAddSample.csprojshowing server hot‑add capabilities. - Authentication:
src/Security/Authentication/JwtBearer/samples/JwtBearerSamplehousesJwtBearerSample.csprojfor token‑based security implementation. - Identity:
src/Identity/samples/IdentitySample.MvccontainsIdentitySample.Mvc.csproj, illustrating user management patterns. - WebSockets:
src/Middleware/WebSockets/samples/EchoAppincludesEchoApp.csprojfor WebSocket middleware usage.
Running ASP.NET Core Samples
Executing a sample requires only the .NET SDK. Navigate to the project folder and invoke dotnet run to launch the application.
Run the SignalR client example:
cd src/SignalR/samples/ClientSample
dotnet run
Test HTTP/3 features with Kestrel:
cd src/Servers/Kestrel/samples/Http3SampleApp
dotnet run
Launch the JWT‑Bearer authentication demo:
cd src/Security/Authentication/JwtBearer/samples/JwtBearerSample
dotnet run
These commands compile and start the minimal web apps, allowing you to inspect Program.cs, review appsettings.json configurations, and test endpoints with a browser or command‑line client.
Summary
- The
samplesdirectory contains self‑contained example applications for each ASP.NET Core component according to the repository structure. - Samples serve three primary roles: learning resources, integration test targets, and reference implementations for the community and Microsoft engineers.
- Each major component (SignalR, Kestrel, Security, Identity) maintains dedicated sample projects with runnable
.csprojfiles. - Execute any sample using
dotnet runafter navigating to the specific project folder.
Frequently Asked Questions
What is the purpose of the samples folder in ASP.NET Core?
The samples folder provides runnable example applications that demonstrate correct usage of framework APIs. According to the source code in dotnet/aspnetcore, these projects serve as living documentation, integration test references, and canonical implementations for developers learning the platform.
How do I run a sample from the ASP.NET Core repository?
Navigate to the specific sample directory—such as src/SignalR/samples/ClientSample—and execute dotnet run from the command line. This builds and launches the application, allowing you to interact with the feature implementation and inspect the startup configuration directly.
Are ASP.NET Core samples used for automated testing?
Yes. Many integration tests in the ASP.NET Core codebase reference sample projects through <ProjectReference> entries to verify real‑world behavior. These samples must compile and run correctly, serving as regression tests that ensure framework updates do not break existing usage patterns.
Where are the authentication samples located in ASP.NET Core?
Authentication samples reside in src/Security/Authentication/[Scheme]/samples/ directories. For example, the JWT‑Bearer sample is located at src/Security/Authentication/JwtBearer/samples/JwtBearerSample/JwtBearerSample.csproj, while other schemes like Cookies or OAuth follow the same organizational pattern.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →