• Stars
    star
    100
  • Rank 340,703 (Top 7 %)
  • Language
    C#
  • License
    MIT License
  • Created almost 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Low level ASP.NET Core example Web server

Ben.Http

NuGet version (Ben.Http)

Low level ASP.NET Core example web server

An example of using the ASP.NET Core servers for a .NET web application without any of the rest of the framework (e.g. Hosting, DI, middleware etc). So you can create your own distinct opinionated framework.

Using Ben.Http

Mostly its an example to derive from.

src\Ben.Http contains and sets up the server; it is Kestrel by default, but any server deriving from 'IServer' will also work (e.g. HttpSys, IIS, etc)

HttpServer.cs contains the server that is newed up; currently set to various defaults/

HttpContext.cs contains the Request/Response context, but this can be changed to be whatever set of properties you want to expose; in whatever way you want to expose them. Generally you get the information from the server by asking the IFeatureCollection for them and they are in the namespace Microsoft.AspNetCore.Http.Features

HttpApplication.cs is the application that deals with processing the requests. This creates and disposes of the HttpContext setting its features; and in this example Task ProcessRequestAsync(HttpContext context) is abstract so an application can derive from this class and implement that one method; and the bolierplate of setting up the Request/Response context is handled for them.

Building

dotnet build -c Release will build the project.

Of note a there is a samples/PlaintextJsonRaw project that then uses this server to create an application that implements the Techempower plaintext and json tests. This is a single file server that you can run from that directory with:

dotnet run -c Release

Also there is a samples/TechEmpowerGenerators project that then uses this server plus some extension methods to create an application that implements the Techempower plaintext, json and fortunes tests in a simpler manner than the Raw. This is again a single file server:

image

You can run from that directory with:

dotnet run -c Release

And it will set up a server listening on port 8080 and responding to the paths /plaintext, /json, /db and /fortunes. You also need to pass the postgres connection string in via connection enviorment variable:

image

Have fun!

Contributing

See CONTRIBUTING.md for information on contributing to this project.

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the .NET Foundation Code of Conduct.

License

This project is licensed with the MIT license.

.NET Foundation

Ben.Http is a .NET Foundation project.

Related Projects

You should take a look at these related projects: