Open-source project
aspnet/AspNetKatana avatar
aspnet/AspNetKatana

AspNetKatana: the OWIN host, server and middleware for .NET

Microsoft's OWIN implementation, the Katana project

991 stars334 forksC#Apache-2.0

At a glance

What is it?
Katana is Microsoft's set of components for hosting OWIN based web applications on .NET Framework, and this repository holds the host, the server and the middleware source. It suits someone maintaining an OWIN stack or a self hosted .NET service, and its release cadence shows the project's age.
Who is it for?
Adopt Katana when you are maintaining an OWIN application on .NET Framework, because the host, the server and the middleware live in one place and the packages are on NuGet with prerelease versions published there too. Do not start a new OWIN project on it, because the framework it targets is .NET Framework and the current ASP.NET stack has moved on.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 16 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Katana actually is

Katana is described as a flexible set of components for building and hosting OWIN-based web applications on .NET Framework, and the repository is the home for the Katana host, server and middleware source code and documentation.

The division into three pieces is the structure of the project. A host is what owns the process, the server is what listens on a socket and speaks HTTP, and the middleware is the pipeline of components that a request passes through. OWIN, the Open Web Interface for .NET, is the specification that defines the boundary between those layers, and Katana is Microsoft's implementation of the hosting side of it.

The products are developed by the ASP.NET team at Microsoft in collaboration with a community of open source developers, which is worth noting because the repository is not a single maintained application. It is a set of components, each of which is versioned and shipped independently, and the README points at a wiki page listing the packages for information about the individual components.

Official releases, including prerelease versions, are published on NuGet rather than from this repository, so the repository is where the source lives and the package feed is where the artifacts come from. The primary language is C#, the licence is Apache-2.0, and the last push to the main branch was on 2026-10-07.

The build scripts, and what each one is for

The Source Code section is short and points at the scripts in the repository root, and their names are the documentation.

To build and run the tests from a command prompt, you run `build.cmd`, which is found in the root directory. The README notes that as part of building you may need to obtain NuGet packages from the NuGet.org public feed, which is the sort of warning that only matters on a machine that has never restored the dependencies.

There are three siblings that split the workflow further. `restore.cmd` is the restore step on its own, `test.cmd` is the test run on its own, and `pack.cmd` is the packaging step that produces the NuGet artifacts. Splitting them is what makes a CI pipeline possible, where restore is cached between runs and packaging only happens on the branches that need it.

For interactive work there is `startvs.cmd`, which opens the solution in Visual Studio. The solution itself is Katana.sln at the top level, and the repository also carries a NuGet.Config, a global.json, Directory.Build.props and Directory.Build.targets, plus an eng/ directory for the shared build logic. The pipeline definitions are azure-pipelines.yml for the public build and azure-pipelines-internal.yml for the internal one.

The samples directory has three projects, Katana.Sandbox.Selfhost, Katana.Sandbox.WebClient and Katana.Sandbox.WebServer, which is the usual way to show a hosting stack working: a self hosted host, a server and a client that talk to it.

The rolling build feed, and its warning

There is a second distribution channel and the README is careful about it.

Signed rolling builds are available via an alternate NuGet feed, and they are meant for developers to try out new features or bug fixes ahead of an official prerelease or final build. The packages are available at a specific Azure DevOps feed URL for the dotnet-libraries group, and the README states in plain terms that rolling builds are not supported for production use.

That distinction is the whole point of having the channel. A rolling build is whatever the last commit on a branch produced, which means it can change underneath you and it can carry a regression that has not been reviewed. It is useful for a team that wants to test a fix against the real packages, and it is the wrong thing to ship.

The fact that the packages are signed is worth noting separately, because it is a different property from the build being official. Signing means the artifact carries a verifiable publisher identity, so you can tell a genuine package from a tampered one. A rolling build being signed tells you who produced it, not that it is safe to run in production, and the README keeps those two ideas apart.

The other repository metadata reflects a real engineering organisation. There is a SECURITY.md for reporting vulnerabilities, a CODE-OF-CONDUCT.md, a CredScanSuppressions.json, which is a list of known credential scanning exceptions so the scanner does not flag the test fixtures, and an es-metadata.yml. There is also a.azuredevops/ directory, a.config/ directory and a.github/ directory, so the build runs in more than one place.

The contribution bar, and the roadmap

The Contribute section lists the ways in, and then sets a standard that is unusual to see stated so plainly.

You can contribute by reviewing and sending feedback on code commits, suggesting and trying out new features as they are implemented, submitting bugs and helping verify fixes as they are checked in, and submitting code fixes or code contributions of your own.

Then the sentence that matters. All code submissions will be rigorously reviewed and tested by the Katana team, and only those that meet an extremely high bar for both quality and design and roadmap appropriateness will be merged into the source.

The roadmap appropriateness part is the interesting half. It is a statement that merging is a decision about direction, not only about code quality, and it explains why a project with a public contribution path can still have a small merge rate. For a contributor, that is the practical thing to plan around. A drive-by fix may sit unreviewed for a long time, and a change that conflicts with the roadmap will not be merged no matter how clean it is.

Planned features and future direction are documented on a roadmap wiki page. The pattern of the whole project is consistent: the code is public, the packages are public, the roadmap is public, and the merge decisions are made by the team in private.

A release line with a visible gap in it

The release history is the last thing worth reading, because it tells you what state the project is in.

There are three recent tags. v4.2.3, named 4.2.3 Release, was published on 2025-07-08. v4.2.2 was published on 2022-05-11 and v4.2.1 on 2022-04-08. So there is a three year gap between 4.2.2 and 4.2.3, and then no release in the fifteen months since 4.2.3.

That does not mean the repository is dead. The last push to the main branch was on 2026-10-07, and the pipeline files, the build props, the eng/ directory and the samples are all signs of a working build. But the tag history says that a new 4.2.4 is not imminent, and the 4.x line is a line that has been quiet for a long time.

The.NET Framework target is the other fact that shapes the decision. Katana is a set of components for hosting OWIN applications on.NET Framework, and the current ASP.NET stack on.NET has moved to a different hosting model. So the question for anyone evaluating this is not whether Katana is well made, it is whether your application is on.NET Framework and OWIN in the first place. If it is, this is the reference implementation and the packages are worth using. If it is not, the value is historical and as a reference.

The documentation is in two places, the repository wiki and the Microsoft overview of OWIN and Katana, and the README treats the wiki as the place for component level information.

Editorial conclusion

Adopt Katana when you are maintaining an OWIN application on .NET Framework, because the host, the server and the middleware live in one place and the packages are on NuGet with prerelease versions published there too. Do not start a new OWIN project on it, because the framework it targets is .NET Framework and the current ASP.NET stack has moved on. Before you rely on a specific build, check the release dates, since 4.2.2 and 4.2.1 are from 2022 while 4.2.3 is from 2025, and prefer the stable NuGet packages over the rolling feed, which the README explicitly says is not supported for production use.

Frequently asked questions

What is AspNetKatana?

Katana is a flexible set of components for building and hosting OWIN-based web applications on .NET Framework, and the repository is the home for the Katana host, server and middleware source code and documentation. The products are developed by the ASP.NET team at Microsoft with a community of open source developers, and the official releases are published on NuGet.

How do I build AspNetKatana from source?

Run `build.cmd` from the repository root to build and run the tests, and note that you may need to obtain NuGet packages from the NuGet.org public feed. The repository also splits the workflow into `restore.cmd`, `test.cmd` and `pack.cmd`, and `startvs.cmd` opens Katana.sln in Visual Studio.

What are the Katana signed rolling builds and should I use them in production?

They are packages from an alternate NuGet feed, meant for developers to try new features and bug fixes ahead of an official prerelease or final build. The README states that rolling builds are not supported for production use, so prefer the stable NuGet packages.

How strict is the AspNetKatana contribution review?

The README says all code submissions will be rigorously reviewed and tested by the Katana team, and only those meeting an extremely high bar for both quality and design and roadmap appropriateness will be merged. Planned features and future direction are documented on a roadmap wiki page.

Official sources

  1. aspnet/AspNetKatana on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/aspnet-aspnetkatana.svg)](https://hysenlabs.com/projects/aspnet-aspnetkatana)

Was this useful?