Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Lightweight web server written in pure C# with few dependencies to 3rd-party libraries.

License

Notifications You must be signed in to change notification settings

eelgame/GenHTTP

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

487 Commits
487 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GenHTTP Webserver

GenHTTP is a lightweight web server written in pure C# with only a few dependencies to 3rd-party libraries. The main purpose of this project is to quickly create feature rich web applications and web services written in .NET 6, allowing developers to concentrate on the functionality rather than on messing around with configuration files, CSS or bundling JS files. Projects are mainly written in .NET, which allows C# developers to use their familiar toolset in web application development as well.

As an example, the website of this project is hosted on a Raspberry Pi: genhttp.org

CI Coverage nuget Package

Features

  • Setup new webservices or websites in a couple of minutes using project templates
  • Embed web services and applications into your existing console, service, WPF or WinForms application
  • Projects are fully described in code - no configuration files needed
  • Optimized out of the box (e.g. by bundling resources or compressing results)
  • Small memory and storage footprint
  • Several themes available to be chosen from
  • Grade A+ security level according to SSL Labs
  • Can be used to mock HTTP responses in component testing (see MockH)

Getting Started

Project templates can be used to create apps for typical use cases with little effort. After installing the templates via dotnet new -i GenHTTP.Templates in the terminal, the templates are available via the console or directly in Visual Studio:

If you would like to extend an existing .NET application, just add a nuget reference to the GenHTTP.Core nuget package. You can then spawn a new server instance with just a few lines of code:

var content = Content.From(Resource.FromString("Hello World!"));

using var server = Host.Create()
                       .Handler(content)
                       .Defaults()
                       .Start(); // or .Run() to block until the application is shut down

When you run this sample it can be accessed in the browser via http://localhost:8080.

The documentation provides a step-by-step starting guide as well as additional information on how to implement webservices, websites, MVC style projects, or single page applications and how to host your application via Docker.

Building the Server

To build the server from source, clone this repository and run the playground project launcher for .NET 6:

git clone https://github.com/Kaliumhexacyanoferrat/GenHTTP.git
cd ./GenHTTP/Playground
dotnet run

This will build the playground project launcher with all the server dependencies and launch the server process on port 8080. You can access the playground in the browser via http://localhost:8080.

All contributions are welcome - If you would like to contribute, have a look at the contribution guidelines.

History

The web server was originally developed in 2008 to run on a netbook with an Intel Atom processor. Both IIS and Apache failed to render dynamic pages on such a slow CPU back then. The original project description can still be found on archive.org. In 2019, the source code has been moved to GitHub with the goal to rework the project to be able to run dockerized web applications written in C#.

Links

Thanks

About

Lightweight web server written in pure C# with few dependencies to 3rd-party libraries.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 99.7%
  • Other 0.3%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.