<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Asp.net Core on Strathweb. A free flowing tech monologue.</title>
    <link>https://www.strathweb.com/categories/asp.net-core/</link>
    <description>Recent content in Asp.net Core on Strathweb. A free flowing tech monologue.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 02 Mar 2026 07:06:14 +0000</lastBuildDate><atom:link href="https://www.strathweb.com/categories/asp.net-core/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pure Post Quantum Cryptography TLS with ASP.NET Core</title>
      <link>https://www.strathweb.com/2026/03/pure-post-quantum-cryptography-tls-with-asp-net-core/</link>
      <pubDate>Mon, 02 Mar 2026 07:06:14 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2026/03/pure-post-quantum-cryptography-tls-with-asp-net-core/</guid>
      <description>&lt;p&gt;Over the last few years, I have dedicated a lot of space &lt;a href=&#34;https://www.strathweb.com/categories/pqc&#34;&gt;on this blog&lt;/a&gt; to the topic of Post-Quantum Cryptography (PQC). Today, we will peek into the TLS 1.3 handshake.&lt;/p&gt;
&lt;p&gt;While &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/&#34;&gt;hybrid mode&lt;/a&gt; TLS is the pragmatic choice for today&amp;rsquo;s internet, understanding how to construct a fully quantum-safe connection is critical for preparing for the &lt;a href=&#34;https://csrc.nist.gov/pubs/ir/8547/ipd&#34;&gt;deprecation of classical algorithms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this post, we are going to explore a &amp;ldquo;pure&amp;rdquo; PQC TLS stack: Post-Quantum Key Exchange, with Post-Quantum Authentication. We will configure an ASP.NET Core application running on Linux to use &lt;em&gt;ML-DSA-65&lt;/em&gt; for authentication and &lt;em&gt;ML-KEM-768&lt;/em&gt; for key exchange.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Building a chat app with Blazor WASM, SignalR and post-quantum end-to-end encryption</title>
      <link>https://www.strathweb.com/2024/08/building-a-chat-app-with-blazor-wasm-signalr-and-post-quantum-end-to-end-encryption/</link>
      <pubDate>Fri, 30 Aug 2024 07:06:14 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2024/08/building-a-chat-app-with-blazor-wasm-signalr-and-post-quantum-end-to-end-encryption/</guid>
      <description>&lt;p&gt;I previously blogged about post-quantum cryptography on this blog a &lt;a href=&#34;https://www.strathweb.com/categories/cryptography/&#34;&gt;few times&lt;/a&gt;. Among other things, I released a set of helper libraries for working with Dilithium in .NET and Duende Identity Server, as well as shared some general samples on post-quantum cryptography in .NET.&lt;/p&gt;
&lt;p&gt;Earlier this month, in a big milestone, &lt;a href=&#34;https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards&#34;&gt;NIST released&lt;/a&gt; the first 3 finalized Post-Quantum encryption standards. I thought it might be nice to celebrate this by building a simple chat application with Blazor WASM and SignalR, that uses post-quantum cryptography for end-to-end encryption.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Strathweb.Dilithium for Duende Identity Server now supports automatic key management</title>
      <link>https://www.strathweb.com/2024/08/strathweb-dilithium-for-duende-identity-server-now-supports-automatic-key-management/</link>
      <pubDate>Fri, 23 Aug 2024 07:06:14 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2024/08/strathweb-dilithium-for-duende-identity-server-now-supports-automatic-key-management/</guid>
      <description>&lt;p&gt;Earlier this week, I released version 0.2.0 of my post-quantum cryptography helper library .NET, &lt;a href=&#34;https://github.com/filipw/Strathweb.Dilithium&#34;&gt;Strathweb.Dilithium&lt;/a&gt;, which introduces a new feature - automatic key management support in Duende Identity Server. This feature plugs into the automatic key management capabilities of Duende Identity Server, and allows you to automatically generate and manage Dilithium keys for token signing purposes, without having to manually handle the key generation and rotation.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Announcing Strathweb.Dilithium - a set of ASP.NET helper libraries for post quantum cryptography</title>
      <link>https://www.strathweb.com/2023/08/announcing-strathweb-dilithium-a-set-of-net-helper-libraries-for-post-quantum-cryptography/</link>
      <pubDate>Tue, 22 Aug 2023 18:00:14 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2023/08/announcing-strathweb-dilithium-a-set-of-net-helper-libraries-for-post-quantum-cryptography/</guid>
      <description>&lt;p&gt;Earlier this year I blogged about post-quantum cryptography in .NET using &lt;a href=&#34;https://www.strathweb.com/2023/02/post-quantum-cryptography-in-net/&#34;&gt;Dilithium and Kyber&lt;/a&gt;. This was then followed by &lt;a href=&#34;https://www.strathweb.com/2023/03/post-quantum-token-signing-with-dilithium-using-duende-identity-server/&#34;&gt;another post&lt;/a&gt;, which showed how Dilithium can be wired into a popular .NET Identity Server, &lt;a href=&#34;https://duendesoftware.com/products/identityserver&#34;&gt;Duende Identity Server&lt;/a&gt;, for token signing purposes.&lt;/p&gt;
&lt;p&gt;Today I would like to announce &lt;a href=&#34;https://github.com/filipw/Strathweb.Dilithium&#34;&gt;Strathweb.Dilithium&lt;/a&gt;, a set of .NET helper libraries to facilitate working with Dilithium in ASP.NET Core projects.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Beware of the default ASP.NET Core Identity settings</title>
      <link>https://www.strathweb.com/2023/03/beware-of-the-default-aspnet-identity-settings/</link>
      <pubDate>Thu, 02 Mar 2023 11:06:14 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2023/03/beware-of-the-default-aspnet-identity-settings/</guid>
      <description>&lt;p&gt;The other day I was involved in setting up a new project based on &lt;a href=&#34;https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-7.0&amp;amp;tabs=visual-studio&#34;&gt;ASP.NET Core Identity&lt;/a&gt;, when I noticed something related to the default configuration that I thought would be worth sharing here.&lt;/p&gt;
&lt;p&gt;Of course, while in general it is not great to rely on default settings of any product (especially when it is the security backbone of your application!) one also expects sensible defaults to be provided.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Problem Details responses everywhere with ASP.NET Core and .NET 7</title>
      <link>https://www.strathweb.com/2022/08/problem-details-responses-everywhere-with-asp-net-core-and-net-7/</link>
      <pubDate>Sun, 28 Aug 2022 08:18:21 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2022/08/problem-details-responses-everywhere-with-asp-net-core-and-net-7/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc7807.html&#34;&gt;Problem Details for HTTP APIs&lt;/a&gt; RFC provides a unified, machine-readable and standardized recipe for exposing error information out of your HTTP APIs - which is of course beneficial both for the API authors, as well as the integrating parties.&lt;/p&gt;
&lt;p&gt;ASP.NET Core has supported problem details since version 2.1, however it was not been uniformly used across all ASP.NET Core components. It was possible to return the Problem Details response manually, or the framework could generate it automatically in several specific cases. Even the official documentation referred to a &lt;a href=&#34;https://docs.microsoft.com/en-us/aspnet/core/web-api/handle-errors?view=aspnetcore-6.0#produce-a-problemdetails-payload-for-exceptions&#34;&gt;third-party middleware&lt;/a&gt; in order to get a better Problem Details experience.&lt;/p&gt;
&lt;p&gt;This is finally changing in .NET 7.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using an existing Startup class with ASP.NET 6 minimal hosting model</title>
      <link>https://www.strathweb.com/2022/02/using-an-existing-startup-class-with-asp-net-6-minimal-hosting-model/</link>
      <pubDate>Mon, 28 Feb 2022 17:28:36 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2022/02/using-an-existing-startup-class-with-asp-net-6-minimal-hosting-model/</guid>
      <description>&lt;p&gt;With the .NET Core 2.1 having reached end of life, and the looming end of life dates for .NET 5 (this spring) and .NET Core 3.1 (this fall), a lot of developers are facing migrating their services to .NET 6.0. Depending on the customization level and the sheer scale of your service ecosystem this may be an easy or relatively complicated task - especially if you would like to additionally tap into the new lightweight hosting model around &lt;em&gt;WebApplication&lt;/em&gt; type.&lt;/p&gt;
&lt;p&gt;A very low-cost, easy approach to this is to take advantage of the fact that one can easily reuse an existing &lt;em&gt;Startup&lt;/em&gt; class with the new hosting model too. This allows leaving most of the code intact, and performing only tiny refactorings around the host bootstrapping.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Beautiful and compact Web APIs revisited – with C# 10 and .NET 6 Preview 7</title>
      <link>https://www.strathweb.com/2021/08/beautiful-and-compact-web-apis-revisited-with-c-10-and-net-6-preview-7/</link>
      <pubDate>Mon, 16 Aug 2021 14:06:35 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2021/08/beautiful-and-compact-web-apis-revisited-with-c-10-and-net-6-preview-7/</guid>
      <description>&lt;p&gt;Back in 2012, when the Roslyn compiler was still closes source and its early CTP stages, &lt;a href=&#34;https://www.strathweb.com/2012/09/scripting-web-api-self-host-with-roslyn-ctp-part-1/&#34;&gt;I blogged&lt;/a&gt; about using its C# scripting capabilities to wire up an ASP.NET Web API server in just a few lines of code, with minimal ceremony. In 2014 I built an OWIN-based host, on top of the, then already well-stablished, scriptcs C# scripting project, that utilized the experimental IIS &amp;ldquo;Helios&amp;rdquo; server to provide a &lt;a href=&#34;https://github.com/scriptcs-contrib/scriptcs-owin-host-iis&#34;&gt;framework for building tiny C# web applications&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In 2017 &lt;a href=&#34;https://www.strathweb.com/2017/01/building-microservices-with-asp-net-core-without-mvc/&#34;&gt;I blogged&lt;/a&gt; about about building lightweight, minimal microservices with the early versions of ASP.NET Core. Last year, as ASP.NET Core and the &amp;ldquo;mainstream&amp;rdquo; C# (despite the initial resistance) started adopting some of these C# scripting concepts, &lt;a href=&#34;https://www.strathweb.com/2020/10/beautiful-and-compact-web-apis-with-c-9-net-5-0-and-asp-net-core/&#34;&gt;I wrote&lt;/a&gt; how they have been incorporated into ASP.NET Core in .NET 5.0, along with diving into some further improvements for building these lightweight Web APIs.&lt;/p&gt;
&lt;p&gt;It is now time to have a look at the latest set of changes in this space - as .NET 6 Preview 7, the latest one at the time of writing, and, in particular, C# 10, bring a lot of extra exciting things to the table.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The curious case of ASP.NET Core integration test deadlock</title>
      <link>https://www.strathweb.com/2021/05/the-curious-case-of-asp-net-core-integration-test-deadlock/</link>
      <pubDate>Thu, 20 May 2021 13:34:50 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2021/05/the-curious-case-of-asp-net-core-integration-test-deadlock/</guid>
      <description>&lt;p&gt;One of the common approaches to testing ASP.NET Core applications is to use the &lt;a href=&#34;https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-5.0&#34;&gt;integration testing&lt;/a&gt; available via the &lt;a href=&#34;https://www.nuget.org/packages/Microsoft.AspNetCore.TestHost/&#34;&gt;Microsoft.AspNetCore.TestHost&lt;/a&gt; package. In particular, the arguably most common scenario is integration testing of the MVC applications via the &lt;a href=&#34;https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Testing&#34;&gt;Microsoft.AspNetCore.Mvc.Testing&lt;/a&gt;, which provides a set of MVC-specific helpers on top of the test host.&lt;/p&gt;
&lt;p&gt;In this post I want to share a curious case of deadlocking integration tests in an ASP.NET Core 3.1 application.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Beautiful and compact Web APIs with C# 9, .NET 5.0 and ASP.NET Core</title>
      <link>https://www.strathweb.com/2020/10/beautiful-and-compact-web-apis-with-c-9-net-5-0-and-asp-net-core/</link>
      <pubDate>Fri, 23 Oct 2020 05:52:45 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2020/10/beautiful-and-compact-web-apis-with-c-9-net-5-0-and-asp-net-core/</guid>
      <description>&lt;p&gt;Almost fours year ago &lt;a href=&#34;https://www.strathweb.com/2017/01/building-microservices-with-asp-net-core-without-mvc/&#34;&gt;I blogged&lt;/a&gt; about building lightweight microservices with ASP.NET Core 1.2 (which actually never shipped in such version and later became ASP.NET Core 2.0). The idea there was to drop the notion of bloated MVC controllers, get rid of as much as we can of the usual verbosity of C# based applications, and use a set of simple extension methods and a few cutting edge features of ASP.NET Core to provide a node.js style experience for authoring Web APIs.&lt;/p&gt;
&lt;p&gt;The article and the accompanying demo projects received quite a lot of attention, and I even got a chance to speak at some conference about these type of approaches to building focused, small microservices. With the .NET 5.0 in sight (.NET 5.0 RC2 is out at the time of writing this), and some remarkable features of C# 9, this &amp;ldquo;lightweight Web APIs&amp;rdquo; concept deserves a revisit, and this is what we will do in this blog post.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>ASP.NET Core MVC 3.x – AddMvc(), AddMvcCore(), AddControllers() and other bootstrapping approaches</title>
      <link>https://www.strathweb.com/2020/02/asp-net-core-mvc-3-x-addmvc-addmvccore-addcontrollers-and-other-bootstrapping-approaches/</link>
      <pubDate>Tue, 18 Feb 2020 19:08:23 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2020/02/asp-net-core-mvc-3-x-addmvc-addmvccore-addcontrollers-and-other-bootstrapping-approaches/</guid>
      <description>&lt;p&gt;There are several ways of bootstrapping your MVC applications on top of ASP.NET Core 3.x. One thing that you need to do, in order to use the framework, is to initialize it into the state where it can actually discover your controllers, views, pages and expose them as HTTP endpoints.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve recently had some conversations with folks about that, and it occurred to me that this is not necessarily all that obvious to everyone. That&amp;rsquo;s because there are a few ways of doing that, so let&amp;rsquo;s quickly run through them.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Dynamic controller routing in ASP.NET Core 3.0</title>
      <link>https://www.strathweb.com/2019/08/dynamic-controller-routing-in-asp-net-core-3-0/</link>
      <pubDate>Thu, 29 Aug 2019 16:03:51 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2019/08/dynamic-controller-routing-in-asp-net-core-3-0/</guid>
      <description>&lt;p&gt;One of the great extensibility points in the routing feature of the older versions of the ASP.NET MVC and ASP.NET Core MVC frameworks was the ability to pick up any route and dynamically point it at a given controller/action.&lt;/p&gt;
&lt;p&gt;This had a lot of excellent use cases - as we will briefly see - and since ASP.NET Core 3.0 Preview 7, the feature is actually finally available in ASP.NET Core 3.0 (despite not being mentioned in the &lt;a href=&#34;https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0-preview-7/&#34;&gt;official release blog post&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;So, let&amp;rsquo;s have a look at dynamic routing in ASP.NET Core 3.0 together!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Elegant way of producing HTTP responses in ASP.NET Core outside of MVC controllers</title>
      <link>https://www.strathweb.com/2019/03/elegant-way-of-producing-http-responses-in-asp-net-core-outside-of-mvc-controllers/</link>
      <pubDate>Sat, 09 Mar 2019 10:27:30 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2019/03/elegant-way-of-producing-http-responses-in-asp-net-core-outside-of-mvc-controllers/</guid>
      <description>&lt;p&gt;ASP.NET Core 2.1 introduced support for a little (or, should I say, not at all) documented feature called &lt;em&gt;IActionResultExecutor&lt;T&gt;&lt;/em&gt;. It allows us to use some of the action results -those that we are used to from MVC controllers - outside of the controller context, so for example from a middleware component.&lt;/p&gt;
&lt;p&gt;Kristian has a great &lt;a href=&#34;https://kristian.hellang.com/using-mvc-result-executors-in-middleware/&#34;&gt;blog post&lt;/a&gt; about result executors, that I recommend you check out. From my side, I wanted to show you today a set of extension methods that were recently introduced into &lt;a href=&#34;https://github.com/WebApiContrib/WebAPIContrib.Core&#34;&gt;WebApiContrib.Core&lt;/a&gt; that make working with &lt;em&gt;IActionResultExecutor&lt;T&gt;&lt;/em&gt; and in general authoring HTTP endpoints outside of controllers even easier.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Be careful when manually handling JSON requests in ASP.NET Core</title>
      <link>https://www.strathweb.com/2019/02/be-careful-when-manually-handling-json-requests-in-asp-net-core/</link>
      <pubDate>Wed, 13 Feb 2019 15:08:21 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2019/02/be-careful-when-manually-handling-json-requests-in-asp-net-core/</guid>
      <description>&lt;p&gt;The other day I was reviewing some code in an ASP.NET Core app. It was an HTTP endpoint, written as a simple, lightweight middleware component (so no MVC), that was handling incoming JSON requests.&lt;/p&gt;
&lt;p&gt;The endpoint was intended to act as an ingestion point for larger amounts of data, so by definition it was supposed to perform well. I immediately noticed a few things that raised my eyebrow, that I wanted to share with you today.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Enabling [ApiController] globally in ASP.NET Core 2.2</title>
      <link>https://www.strathweb.com/2019/01/enabling-apicontroller-globally-in-asp-net-core-2-2/</link>
      <pubDate>Thu, 31 Jan 2019 08:25:02 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2019/01/enabling-apicontroller-globally-in-asp-net-core-2-2/</guid>
      <description>&lt;p&gt;A while ago we looked at how &lt;a href=&#34;https://www.strathweb.com/2018/02/exploring-the-apicontrollerattribute-and-its-features-for-asp-net-core-mvc-2-1/&#34;&gt;ApiControllerAttribute&lt;/a&gt; can be used in ASP.NET Core MVC to make Web API authoring a little bit more developer friendly.&lt;/p&gt;
&lt;p&gt;Today let&amp;rsquo;s have a look at a tiny little improvement in &lt;a href=&#34;https://blogs.msdn.microsoft.com/webdev/2018/12/04/asp-net-core-2-2-available-today/&#34;&gt;ASP.NET Core 2.2&lt;/a&gt; - the ability to set it up globally (and perhaps a few other things).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Convert null-valued results to 404 in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2018/10/convert-null-valued-results-to-404-in-asp-net-core-mvc/</link>
      <pubDate>Fri, 05 Oct 2018 12:22:40 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/10/convert-null-valued-results-to-404-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;ASP.NET Core MVC is pretty flexible in terms of how it expects you to return results from the API actions. You could return an &lt;em&gt;IActionResult&lt;/em&gt;, which gives you certain control over the status code and the nature of the response (i.e. object or a file or a status code only and so on). You could return a concrete object instance, and the framework will serialize it to the relevant response format. Finally, you could also return the new &lt;em&gt;ActionResult&lt;T&gt;&lt;/em&gt; which allows you to mix both of the previous approaches in a single method, giving you the best of both worlds.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at what happens in the framework when you return a &lt;em&gt;null&lt;/em&gt; object instance and how you can change that behavior.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Running ASP.NET Core content negotiation by hand</title>
      <link>https://www.strathweb.com/2018/09/running-asp-net-core-content-negotiation-by-hand/</link>
      <pubDate>Wed, 19 Sep 2018 14:55:43 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/09/running-asp-net-core-content-negotiation-by-hand/</guid>
      <description>&lt;p&gt;When you are building flexible HTTP APIs, supporting a wide array of different clients, it is common to rely on the process of &lt;a href=&#34;https://developer.mozilla.org/de/docs/Web/HTTP/Content_negotiation&#34;&gt;content negotiation&lt;/a&gt;, to allow each client to interact with the API in the most convenient way - be it JSON, XML, Protobuf, Messagepack or any other media type on which both the client and the server can agree.&lt;/p&gt;
&lt;p&gt;I have blogged about content negotiation (or in short: conneg) a few times in the past (for example &lt;a href=&#34;https://www.strathweb.com/2012/07/everything-you-want-to-know-about-asp-net-web-api-content-negotation/&#34;&gt;here&lt;/a&gt; or &lt;a href=&#34;https://www.strathweb.com/2014/11/formatters-asp-net-mvc-6/&#34;&gt;here, in ASP.NET Core context&lt;/a&gt;). Today I&amp;rsquo;d like to show you how - in ASP.NET Core - to easily run conneg by hand, instead of relying on the built-in MVC conneg mechanisms.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Azure Blob Storage IFileProvider for ASP.NET Core</title>
      <link>https://www.strathweb.com/2018/08/azure-blob-storage-ifileprovider-for-asp-net-core/</link>
      <pubDate>Thu, 16 Aug 2018 09:08:26 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/08/azure-blob-storage-ifileprovider-for-asp-net-core/</guid>
      <description>&lt;p&gt;As part of my recent talks on ASP.NET core, I have been showing how to build a custom &lt;em&gt;IFileProvider&lt;/em&gt; for ASP.NET Core. The example that I was using was Azure Blob Storage - and exposing files from there as if they were local files that are part of your application.&lt;/p&gt;
&lt;p&gt;I have pushed that code to Github and decided to package it as Nuget package, which, hopefully, someone will find useful.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Centralized exception handling and request validation in ASP.NET Core</title>
      <link>https://www.strathweb.com/2018/07/centralized-exception-handling-and-request-validation-in-asp-net-core/</link>
      <pubDate>Mon, 30 Jul 2018 16:22:13 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/07/centralized-exception-handling-and-request-validation-in-asp-net-core/</guid>
      <description>&lt;p&gt;One of the most common things that I have seen developers working with ASP.NET Core struggle with, is the way to centrally and consistently handle application errors and input validation. Those seemingly different topics are really two sides of the same coin.&lt;/p&gt;
&lt;p&gt;More often than not, exceptions are just allowed to bubble all the way up and left unhandled, leaving the framework the responsibility to convert them to a generic 500 errors. In many other situations, exception handling is fragmented and happens in certain individual controllers only. With regard to input validation, we often have completely customized ways of notifying the client about input issues or - at best - we leave everything to the framework and let it work its defaults via the &lt;em&gt;ModelState&lt;/em&gt; functionality.&lt;/p&gt;
&lt;p&gt;What I wanted to show you today is how you can introduce a consistent, centralized way of handling exceptions and request validation in an ASP.NET Core web application.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Overriding externally set headers and HTTP status codes in ASP.NET Core</title>
      <link>https://www.strathweb.com/2018/07/overriding-externally-set-headers-and-http-status-codes-in-asp-net-core/</link>
      <pubDate>Tue, 10 Jul 2018 11:34:00 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/07/overriding-externally-set-headers-and-http-status-codes-in-asp-net-core/</guid>
      <description>&lt;p&gt;I was working on an interesting issue in an ASP.NET Core recently. An external framework was responsible for creating an HTTP Response, and I was only in control of a little component that customized some internal behaviours (via a relevant extensibility point), without being able to influence the final response sent over HTTP.&lt;/p&gt;
&lt;p&gt;This is common if you think about extending things like CMS systems or specialized services like for example &lt;a href=&#34;https://github.com/IdentityServer/IdentityServer4&#34;&gt;Identity Server&lt;/a&gt;. In those situations, more often than not, the framework would be highly opinionated in what it is trying to do at the HTTP boundaries and as a result, trying to override the HTTP status codes or headers it produces may not be easy.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at a simple generic workaround.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Controllers as action filters in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2018/06/controllers-as-action-filters-in-asp-net-core-mvc/</link>
      <pubDate>Mon, 11 Jun 2018 09:11:52 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/06/controllers-as-action-filters-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;It is common to leverage action filters when building MVC applications - this was the case in classic ASP.NET MVC, in ASP.NET Web API and is a still widely used technique (&lt;a href=&#34;https://www.strathweb.com/2015/06/action-filters-service-filters-type-filters-asp-net-5-mvc-6/&#34;&gt;with much richer support!&lt;/a&gt;) in ASP.NET Core MVC.&lt;/p&gt;
&lt;p&gt;What is not commonly known though, is that it&amp;rsquo;s possible for controllers to act as their own filters - so let&amp;rsquo;s have a look at this feature today.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Dependency injection into actions in ASP.NET Core MVC 2.1</title>
      <link>https://www.strathweb.com/2018/05/dependency-injection-into-actions-in-asp-net-core-mvc-2-1/</link>
      <pubDate>Sun, 27 May 2018 10:04:39 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/05/dependency-injection-into-actions-in-asp-net-core-mvc-2-1/</guid>
      <description>&lt;p&gt;A few years ago I blogged about dependency injection &lt;a href=&#34;https://www.strathweb.com/2014/07/dependency-injection-directly-actions-asp-net-web-api/&#34;&gt;directly into actions in ASP.NET Web API&lt;/a&gt;. The idea is quite simple - instead of injecting all of your dependencies via the controller&amp;rsquo;s constructor, you can inject them as parameters into the action handling a given HTTP request.&lt;/p&gt;
&lt;p&gt;This can help you prevent over-injection in the constructor; I also like this approach because it&amp;rsquo;s very verbose and clear - an action explicitly manifests what it needs to handle the request and gets just that, nothing more.&lt;/p&gt;
&lt;p&gt;It actually works out of the box in ASP.NET Core, so let&amp;rsquo;s have a look at that and some related configuration.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Generic and dynamically generated controllers in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2018/04/generic-and-dynamically-generated-controllers-in-asp-net-core-mvc/</link>
      <pubDate>Fri, 06 Apr 2018 13:42:56 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/04/generic-and-dynamically-generated-controllers-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;One of those recurring themes that seem to come back fairly regularly among .NET web developers, is the usage of generic controllers to define endpoints in their Web APIs. I have witnessed these discussions as part of ASP.NET MVC, then ASP.NET Web API and most recently in ASP.NET Core MVC.&lt;/p&gt;
&lt;p&gt;While I don&amp;rsquo;t necessarily see a huge need or benefit for generic controllers, I can imagine that - especially in enterprise context - there are scenarios where exposing similarly structured, &amp;ldquo;cookie-cutter&amp;rdquo; CRUD endpoints quickly and seamlessly, could possibly have some business value.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at generic controllers then, and how we could also dynamically feed types into them.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Exploring the ApiControllerAttribute and its features for ASP.NET Core MVC 2.1</title>
      <link>https://www.strathweb.com/2018/02/exploring-the-apicontrollerattribute-and-its-features-for-asp-net-core-mvc-2-1/</link>
      <pubDate>Mon, 05 Feb 2018 15:43:24 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/02/exploring-the-apicontrollerattribute-and-its-features-for-asp-net-core-mvc-2-1/</guid>
      <description>&lt;p&gt;ASP.NET Core MVC 2.1 will ship with a nice little feature aimed specifically at people building HTTP APIs - &lt;em&gt;ApiControllerAttribute&lt;/em&gt;. While the stable release of 2.1 is not yet here, we can already have a look behind the scenes - what is this feature doing, and how can it help you write Web APIs.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>TypedRouting for ASP.NET Core MVC 2</title>
      <link>https://www.strathweb.com/2018/01/typedrouting-for-asp-net-core-mvc-2/</link>
      <pubDate>Thu, 25 Jan 2018 10:31:25 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2018/01/typedrouting-for-asp-net-core-mvc-2/</guid>
      <description>&lt;p&gt;Today I have released a new version of &lt;a href=&#34;&#34;&gt;Strathweb.TypedRouting.AspNetCore&lt;/a&gt;. This new version is built as .NET Standard 2.0, and - obviously - finally supports ASP.NET Core MVC 2.&lt;/p&gt;
&lt;p&gt;Here is a short summary and some links to help you get started.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>[Required] and [BindRequired] in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2017/12/required-and-bindrequired-in-asp-net-core-mvc/</link>
      <pubDate>Thu, 21 Dec 2017 14:30:21 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/12/required-and-bindrequired-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;When controlling the binding behavior of models in ASP.NET Core MVC applications, it is very common to perform some validation on them. For that, &lt;a href=&#34;https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations%28v=vs.110%29.aspx?f=255&amp;amp;MSPPError=-2147217396&#34;&gt;data annotations&lt;/a&gt; are a perfect tool.&lt;/p&gt;
&lt;p&gt;One of the most typical use cases of data annotations is to ensure that a value of a certain property has been provided by the caller of the API - and this, historically (in &amp;ldquo;classic&amp;rdquo; ASP.NET MVC), has been controlled by &lt;em&gt;RequiredAttribute&lt;/em&gt;. The attribute can still be used in ASP.NET Core MVC, but there is also a new one - &lt;em&gt;BindRequiredAttribute&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at the subtle differences between them.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Strathweb TypedRouting AspNetCore 1.1.0 released!</title>
      <link>https://www.strathweb.com/2017/09/strathweb-typedrouting-aspnetcore-1-1-0-released/</link>
      <pubDate>Fri, 08 Sep 2017 11:46:39 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/09/strathweb-typedrouting-aspnetcore-1-1-0-released/</guid>
      <description>&lt;p&gt;Today I have released the 1.1.0 version of &lt;a href=&#34;https://github.com/filipw/Strathweb.TypedRouting.AspNetCore&#34;&gt;Typed Routing project&lt;/a&gt;. I encourage you to try this if you like to have your routes centrally configured, rather than stored in attributes at action level.&lt;/p&gt;
&lt;p&gt;You can install it from NuGet using the &lt;a href=&#34;https://www.nuget.org/packages/Strathweb.TypedRouting.AspNetCore&#34;&gt;Strathweb.TypedRouting.AspNetCore&lt;/a&gt; package name. Here is what’s new in this release.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Customizing query string parameter binding in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2017/07/customizing-query-string-parameter-binding-in-asp-net-core-mvc/</link>
      <pubDate>Fri, 21 Jul 2017 13:55:42 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/07/customizing-query-string-parameter-binding-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;A few years ago I blogged about &lt;a href=&#34;https://www.strathweb.com/2013/04/asp-net-web-api-parameter-binding-part-1-understanding-binding-from-uri/&#34;&gt;binding parameters from URI&lt;/a&gt; in ASP.NET Web API. One of the examples in that post was how to bind a comma-separated collection passed to your API as a query string parameter.&lt;/p&gt;
&lt;p&gt;Technologies change, and we now work with ASP.NET Core (and the MVC Core framework), but problems remain the same - so let&amp;rsquo;s have a look at how we can customize the way parameters are bound from query string in ASP.NET Core MVC.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using MessagePack with ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2017/06/using-messagepack-with-asp-net-core-mvc/</link>
      <pubDate>Wed, 28 Jun 2017 13:25:49 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/06/using-messagepack-with-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;Some time ago (actually, almost 5 years ago), I blogged about using &lt;a href=&#34;https://www.strathweb.com/2012/09/boost-up-your-asp-net-web-api-with-messagepack/&#34;&gt;MessagePack with ASP.NET Web API&lt;/a&gt; in order to improve your API&amp;rsquo;s efficiency over JSON - both in terms of serialization speed and in message payload size.&lt;/p&gt;
&lt;p&gt;That code later made it to the &lt;a href=&#34;https://github.com/WebApiContrib&#34;&gt;WebApiContrib&lt;/a&gt; project, where it was released as an &lt;a href=&#34;https://github.com/WebApiContrib/WebApiContrib.Formatting.MsgPack&#34;&gt;add-on&lt;/a&gt; to ASP.NET Web API.&lt;/p&gt;
&lt;p&gt;I recently had a thought - since we now have &lt;a href=&#34;https://github.com/WebApiContrib/WebAPIContrib.Core&#34;&gt;WebApiContrib.Core&lt;/a&gt; for ASP.NET Core, why not revisit the idea, and create a MessagePack add-on for that too?&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using IActionConstraints in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2017/06/using-iactionconstraints-in-asp-net-core-mvc/</link>
      <pubDate>Tue, 20 Jun 2017 14:02:03 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/06/using-iactionconstraints-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;ASP.NET Core provides a way to constraint parameter values when matching routes via an &lt;em&gt;IRouteConstraint&lt;/em&gt; (&lt;a href=&#34;https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing#route-constraint-reference&#34;&gt;read more here&lt;/a&gt;) interface. This can be very useful, if you want to disambiguate certain routes from one another. This functionality is built into the routing package and is independent from the MVC framework.&lt;/p&gt;
&lt;p&gt;However, aside from that, the MVC framework itself also provides an interesting constraint-mechanism - &lt;em&gt;IActionConstraints&lt;/em&gt;. Let&amp;rsquo;s have a look at them today.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Resolving ASP.NET Core Startup class from the DI container</title>
      <link>https://www.strathweb.com/2017/06/resolving-asp-net-core-startup-class-from-the-di-container/</link>
      <pubDate>Tue, 13 Jun 2017 13:35:36 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/06/resolving-asp-net-core-startup-class-from-the-di-container/</guid>
      <description>&lt;p&gt;In ASP.NET Core, the most common setup is characterized by having a standalone &lt;em&gt;Startup&lt;/em&gt; class, responsible for bootstrapping the services needed by your application, as well as setting up the application pipeline.&lt;/p&gt;
&lt;p&gt;What most users of ASP.NET Core do not realize, is that at runtime, the &lt;em&gt;Startup&lt;/em&gt; instance is actually being resolved from the DI container. This allows you to control some interesting aspects of how your application is bootstrapped, which can be really important i.e. in integration testing scenarios.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Running multiple independent ASP.NET Core pipelines side by side in the same application</title>
      <link>https://www.strathweb.com/2017/04/running-multiple-independent-asp-net-core-pipelines-side-by-side-in-the-same-application/</link>
      <pubDate>Fri, 07 Apr 2017 09:17:39 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/04/running-multiple-independent-asp-net-core-pipelines-side-by-side-in-the-same-application/</guid>
      <description>&lt;p&gt;The other day I started looking into a problem of being able to run several independent ASP.NET Core pipelines from within the same main application, running on top of the same Kestrel server. This was actually &lt;a href=&#34;https://github.com/aspnet/Mvc/issues/5326&#34;&gt;asked on MVC Github repo&lt;/a&gt; but closed without a real answer.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a detailed look at the problem, and (one) possible solution to it.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Disposing resources at the end of ASP.NET Core request</title>
      <link>https://www.strathweb.com/2017/03/disposing-resources-at-the-end-of-asp-net-core-request/</link>
      <pubDate>Mon, 20 Mar 2017 08:35:21 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/03/disposing-resources-at-the-end-of-asp-net-core-request/</guid>
      <description>&lt;p&gt;Today, let&amp;rsquo;s have a look at dealing with disposable objects in ASP.NET Core. Imagine you have an object that you&amp;rsquo;d like to reuse throughout the duration of the HTTP request, but at the end, it must clean up some of its open resources or handles. This is a common requirement for i.e. file writers, DB connections, other unmanaged resources or external processes - to mention just a few.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Building microservices with ASP.NET Core (without MVC)</title>
      <link>https://www.strathweb.com/2017/01/building-microservices-with-asp-net-core-without-mvc/</link>
      <pubDate>Sun, 22 Jan 2017 13:37:04 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2017/01/building-microservices-with-asp-net-core-without-mvc/</guid>
      <description>&lt;p&gt;There are several reasons why it makes sense to build super-lightweight HTTP services (or, despite all the baggage the word brings, &amp;ldquo;microservices&amp;rdquo;). I do not need to go into all the operational or architectural benefits of such approach to system development, as &lt;a href=&#34;https://martinfowler.com/articles/microservices.html&#34;&gt;it has been discussed&lt;/a&gt; a lot elsewhere.&lt;/p&gt;
&lt;p&gt;It feels natural that when building such HTTP services, it definitely makes sense to keep the footprint of the technology you chose as small as possible, not to mention the size of the codebase you should maintain long term.&lt;/p&gt;
&lt;p&gt;In this point I wanted to show a couple of techniques for building very lightweight HTTP services on top ASP.NET Core, without the use of any framework, and with minimal code bloat.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Accessing HttpContext outside of framework components in ASP.NET Core</title>
      <link>https://www.strathweb.com/2016/12/accessing-httpcontext-outside-of-framework-components-in-asp-net-core/</link>
      <pubDate>Tue, 13 Dec 2016 14:02:42 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/12/accessing-httpcontext-outside-of-framework-components-in-asp-net-core/</guid>
      <description>&lt;p&gt;When developing web applications with ASP.NET, it is common to end up in situations where you require access to &lt;em&gt;HttpContext&lt;/em&gt;. This wouldn&amp;rsquo;t be anything special, but outside of the context of framework level APIs such as controllers, middleware and so on (which would always give you a way to fetch the current &lt;em&gt;HttpContext&lt;/em&gt;), it can be tricky.&lt;/p&gt;
&lt;p&gt;While generally speaking, &lt;em&gt;HttpContext&lt;/em&gt; could be passed around as a regular dependency to the logical components that require it, that solution is often impractical.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at how you can get a hold of &lt;em&gt;HttpContext&lt;/em&gt; in ASP.NET Core.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Strongly typed configuration in ASP.NET Core without IOptions&lt;T&gt;</title>
      <link>https://www.strathweb.com/2016/09/strongly-typed-configuration-in-asp-net-core-without-ioptionst/</link>
      <pubDate>Thu, 29 Sep 2016 09:31:16 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/09/strongly-typed-configuration-in-asp-net-core-without-ioptionst/</guid>
      <description>&lt;p&gt;There are several great resources on the Internet about using the new &lt;a href=&#34;https://github.com/aspnet/Configuration&#34;&gt;Configuration&lt;/a&gt; and &lt;a href=&#34;https://github.com/aspnet/Options&#34;&gt;Options&lt;/a&gt; framework of ASP.NET Core - like this comprehensive post by &lt;a href=&#34;https://weblog.west-wind.com/posts/2016/may/23/strongly-typed-configuration-settings-in-aspnet-core&#34;&gt;Rick Strahl&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Using strongly typed configuration is without a question a great convenience and productivity boost for the developers; but what I wanted to show you today is how to bind &lt;em&gt;IConfiguration&lt;/em&gt; directly to your POCO object - so that you can inject it directly into the dependent classes without wrapping into &lt;em&gt;IOptions&lt;T&gt;&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Required query string parameters in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2016/09/required-query-string-parameters-in-asp-net-core-mvc/</link>
      <pubDate>Mon, 19 Sep 2016 15:26:02 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/09/required-query-string-parameters-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;Today let&amp;rsquo;s have a look at two extensibility points in ASP.NET Core MVC - &lt;em&gt;IActionConstraint&lt;/em&gt; and &lt;em&gt;IParameterModelConvention&lt;/em&gt;. We&amp;rsquo;ll see how we can utilize them to solve a problem, that is not handled out of the box by the framework - creating an MVC action that has mandatory query string parameters.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>[Controller] and [NonController] attributes in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2016/09/controller-and-noncontroller-attributes-in-asp-net-core-mvc/</link>
      <pubDate>Thu, 08 Sep 2016 15:08:41 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/09/controller-and-noncontroller-attributes-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;One of the late additions before the RTM release of ASP.NET Core MVC was the introduction of the &lt;em&gt;[Controller]&lt;/em&gt; attribute, and its counterpart, &lt;em&gt;[NonController]&lt;/em&gt;, which were added in RC2.&lt;/p&gt;
&lt;p&gt;Together, they allow you to more specifically control which classes should be considered by the framework to be controllers (or controller candidates) and which shouldn&amp;rsquo;t. They also help you avoid the nasty hacks we needed to do in i.e. &lt;a href=&#34;https://www.strathweb.com/2013/02/but-i-dont-want-to-call-web-api-controllers-controller/&#34;&gt;ASP.NET Web API&lt;/a&gt; to opt out from the &amp;ldquo;Controller&amp;rdquo; suffix in the name.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Building a lightweight, controller-less, Markdown-only website in ASP.NET Core</title>
      <link>https://www.strathweb.com/2016/08/building-a-lightweight-controller-less-markdown-only-website-in-asp-net-core/</link>
      <pubDate>Wed, 17 Aug 2016 19:41:37 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/08/building-a-lightweight-controller-less-markdown-only-website-in-asp-net-core/</guid>
      <description>&lt;p&gt;In this blog post let&amp;rsquo;s have a look at building a lightweight site in ASP.NET Core.&lt;/p&gt;
&lt;p&gt;In &amp;ldquo;classic&amp;rdquo; ASP.NET we had the WebPages framework - which allowed us to build sites composed only of views. This was perfect for lightweight projects, where we didn&amp;rsquo;t need the entire model-controller infrastructure.&lt;/p&gt;
&lt;p&gt;At the moment, ASP.NET Core doesn&amp;rsquo;t have an equivalent yet (though it&amp;rsquo;s being &lt;a href=&#34;https://github.com/aspnet/RazorPages&#34;&gt;worked on&lt;/a&gt;), but we have already provided a similar type of experience via the &lt;a href=&#34;https://github.com/WebApiContrib/WebAPIContrib.Core&#34;&gt;WebApiContrib&lt;/a&gt; project (you can read more about the project &lt;a href=&#34;https://www.strathweb.com/2016/07/announcing-webapicontrib-for-asp-net-core/&#34;&gt;here&lt;/a&gt;). With the help of some of the libraries from there, we can build controller-less sites for ASP.NET Core already.&lt;/p&gt;
&lt;p&gt;In addition to that, we can combine it with using Markdown tag helpers for content delivery - and it will result in a very cool experience - being able to author ASP.NET Core sites, without controllers, in Markdown. With Razor sprinkled on top of it, to provide dynamic data.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look - more after the jump.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Announcing WebApiContrib for ASP.NET Core</title>
      <link>https://www.strathweb.com/2016/07/announcing-webapicontrib-for-asp-net-core/</link>
      <pubDate>Mon, 18 Jul 2016 06:42:58 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/07/announcing-webapicontrib-for-asp-net-core/</guid>
      <description>&lt;p&gt;In the past, a &lt;a href=&#34;https://github.com/orgs/WebApiContrib/people&#34;&gt;bunch of us&lt;/a&gt; from the ASP.NET Web API community worked together on a WebApiContrib project (or really, &lt;em&gt;projects&lt;/em&gt;, cause there were many of them!).&lt;/p&gt;
&lt;p&gt;The idea was to provide an easy to use platform, a one stop place for community contributions for ASP.NET Web API - both larger add ons, such as HTML/Razor support for Web API, as well as smaller things like i.e. reusable filters or even helper methods. This worked extremely well - &lt;a href=&#34;https://www.nuget.org/packages?q=Tags%3A&#34; title=&#34;WebApiContrib&#34;&gt;WebApiContrib packages&lt;/a&gt; were downloaded over 500k times on Nuget, and a nice community has emerged around the project on &lt;a href=&#34;https://github.com/WebApiContrib&#34;&gt;Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Recently, we decided to restart the project, this time focusing on ASP.NET Core. Since the &amp;ldquo;brand&amp;rdquo; has caught on in the community and is fairly recognizable, we just called it &lt;a href=&#34;https://github.com/WebApiContrib/WebAPIContrib.Core&#34;&gt;WebApiContrib.Core&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Customizing FormatFilter behavior in ASP.NET Core MVC 1.0</title>
      <link>https://www.strathweb.com/2016/07/customizing-formatfilter-behavior-in-asp-net-core-mvc-1-0/</link>
      <pubDate>Wed, 06 Jul 2016 18:57:33 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/07/customizing-formatfilter-behavior-in-asp-net-core-mvc-1-0/</guid>
      <description>&lt;p&gt;When you are building HTTP APIs with ASP.NET Core MVC, the framework allows you to use &lt;em&gt;FormatFilter&lt;/em&gt; to let the calling client override any content negotiation that might have happened on the server side.&lt;/p&gt;
&lt;p&gt;This way, the client can - for example - force the return data to be JSON or CSV or any other format suitable (as long as the server supports it, of course) for his consumption.&lt;/p&gt;
&lt;p&gt;The built-in mechanism (out of the box version of &lt;em&gt;FormatFilter&lt;/em&gt;) is a little limited, so let&amp;rsquo;s have a look at how you can extend and customize its behavior.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Global route prefix in ASP.NET Core MVC (revisited)</title>
      <link>https://www.strathweb.com/2016/06/global-route-prefix-with-asp-net-core-mvc-revisited/</link>
      <pubDate>Thu, 09 Jun 2016 07:16:51 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/06/global-route-prefix-with-asp-net-core-mvc-revisited/</guid>
      <description>&lt;p&gt;A couple of months ago &lt;a href=&#34;https://www.strathweb.com/2015/10/global-route-prefixes-with-attribute-routing-in-asp-net-5-and-mvc-6/&#34;&gt;I blogged about adding a feature&lt;/a&gt; to ASP.NET Core MVC (or ASP.NET 5 at the time) that will allow you to set central route prefix(es) to your attribute routing mechanism.&lt;/p&gt;
&lt;p&gt;That solution was written against &lt;em&gt;beta8&lt;/em&gt; version of ASP.NET Core and since now we are at RC2 - it doesn&amp;rsquo;t (surprise, surprise) work anymore.&lt;/p&gt;
&lt;p&gt;Here is the updated version.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Introducing Strathweb TypedRouting for ASP.NET MVC Core</title>
      <link>https://www.strathweb.com/2016/06/introducing-strathweb-typedrouting-for-asp-net-mvc-core/</link>
      <pubDate>Fri, 03 Jun 2016 06:50:06 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/06/introducing-strathweb-typedrouting-for-asp-net-mvc-core/</guid>
      <description>&lt;p&gt;One of the side projects I created for Web API a while ago was &lt;a href=&#34;https://github.com/filipw/Strathweb.TypedRouting&#34;&gt;Strathweb.TypeRouting&lt;/a&gt; - a little library built on top of the attribute routing extensibility points, that allowed you to declare Web API routes centrally, in a strongly typed way (as opposed to the built in, anonymous object approach).&lt;/p&gt;
&lt;p&gt;Then, some time ago, I &lt;a href=&#34;https://www.strathweb.com/2015/03/strongly-typed-routing-asp-net-mvc-6-iapplicationmodelconvention/&#34;&gt;blogged&lt;/a&gt; about how you would achieve the same thing in ASP.NET Core. A bunch of things have changed since then - the original post was written against beta6 of the framework I believe.&lt;/p&gt;
&lt;p&gt;Last week, I set up the code on &lt;a href=&#34;https://github.com/filipw/Strathweb.TypedRouting.AspNetCore&#34;&gt;Github&lt;/a&gt;, migrated everything to RC2 and released on &lt;a href=&#34;https://www.nuget.org/packages/Strathweb.TypedRouting.AspNetCore&#34;&gt;NuGet&lt;/a&gt; for everyone to use.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>NDC Oslo Web API sample updated to ASP.NET Core RC2</title>
      <link>https://www.strathweb.com/2016/05/ndc-oslo-web-api-sample-updated-to-asp-net-core-rc2/</link>
      <pubDate>Mon, 16 May 2016 17:43:23 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/05/ndc-oslo-web-api-sample-updated-to-asp-net-core-rc2/</guid>
      <description>&lt;p&gt;Last year at &lt;a href=&#34;http://ndcoslo.com&#34;&gt;NDC Oslo&lt;/a&gt; I did a talk about &lt;a href=&#34;https://vimeo.com/131633175&#34;&gt;migrating from ASP.NET Web API to ASP.NET 5 MVC 6&lt;/a&gt; (as it was called at the time).&lt;/p&gt;
&lt;p&gt;The talk was done against the beta 6 version of the runtime, so release-wise, it was quite a way back.&lt;/p&gt;
&lt;p&gt;To celebrate today&amp;rsquo;s release of ASP.NET Core RC2, I have updated the code samples from the talk to that RC2 version. Hopefully folks would still find it useful.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Request.IsLocal in ASP.NET Core</title>
      <link>https://www.strathweb.com/2016/04/request-islocal-in-asp-net-core/</link>
      <pubDate>Fri, 15 Apr 2016 12:44:03 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/04/request-islocal-in-asp-net-core/</guid>
      <description>&lt;p&gt;In the &amp;ldquo;classic&amp;rdquo; ASP.NET, &lt;em&gt;System.Web.HttpRequest&lt;/em&gt; gave us a fairly useful &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.httprequest.islocal.aspx&#34;&gt;IsLocal&lt;/a&gt; property which developers used to identify local requests.&lt;/p&gt;
&lt;p&gt;It returned &lt;strong&gt;true&lt;/strong&gt; if the IP address of the request originator was 127.0.0.1 or if the IP address of the request was the same as the server&amp;rsquo;s IP address.&lt;/p&gt;
&lt;p&gt;ASP.NET Core RC1 exposed similar type of information on its &lt;em&gt;ConnectionInfo&lt;/em&gt; object (hanging off &lt;em&gt;HttpContext&lt;/em&gt;) and via an &lt;em&gt;IHttpConnectionFeature&lt;/em&gt;. However, this is being removed in RC2.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s see how you can quickly add it back as extension method, so that you can use it going forward.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Predefined Namespaces And Custom Base View Page in ASP.NET Core 1.0 MVC</title>
      <link>https://www.strathweb.com/2016/04/predefined-namespaces-and-custom-base-view-page-in-asp-net-core-1-0-mvc/</link>
      <pubDate>Fri, 08 Apr 2016 00:06:44 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/04/predefined-namespaces-and-custom-base-view-page-in-asp-net-core-1-0-mvc/</guid>
      <description>&lt;p&gt;It is quite common to predefine some namespaces to be available in the context of your Razor view files in ASP.NET MVC. In MVC 5, it was done inside the &lt;em&gt;web.config&lt;/em&gt; file - not the &amp;ldquo;main&amp;rdquo; application one, but the one residing inside your &lt;em&gt;Views&lt;/em&gt; folder.&lt;/p&gt;
&lt;p&gt;Additionally, the same file was used to define the &lt;em&gt;pageBaseType&lt;/em&gt; for your Razor views. This way you could expose extra members or behaviors to your pages, such as injected services or common configuration objects.&lt;/p&gt;
&lt;p&gt;Since there is no more &lt;em&gt;web.config&lt;/em&gt; in ASP.NET Core 1.0 MVC, let&amp;rsquo;s have a look at how to achieve the same in the next generation ASP.NET.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The Subtle Perils of Controller Dependency Injection in ASP.NET Core MVC</title>
      <link>https://www.strathweb.com/2016/03/the-subtle-perils-of-controller-dependency-injection-in-asp-net-core-mvc/</link>
      <pubDate>Mon, 28 Mar 2016 17:18:28 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/03/the-subtle-perils-of-controller-dependency-injection-in-asp-net-core-mvc/</guid>
      <description>&lt;p&gt;Some time ago I wrote a blog about &lt;a href=&#34;https://www.strathweb.com/2015/04/asp-net-mvc-6-discovers-controllers/&#34;&gt;how ASP.NET MVC 6 discovers controllers&lt;/a&gt;. While a lot has change since then, including the name - now the framework being called ASP.NET Core MVC, the post is still valid and the processes described there haven&amp;rsquo;t really changed.&lt;/p&gt;
&lt;p&gt;That said, there is one extra thing that should be added to it, and that is how external dependency injection containers relate to the process of controller discovery and instantiation, as there is a subtle difference between ASP.NET Core MVC and the &amp;ldquo;classic&amp;rdquo; frameworks - MVC 5 or Web API 2. This post is really sparked by the conversation on Twitter &lt;a href=&#34;https://twitter.com/jeremydmiller/status/712621955468275712&#34;&gt;with Jeremy and Kristian&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>FormatFilter and MediaTypeMappings in ASP.NET Core 1.0 MVC</title>
      <link>https://www.strathweb.com/2016/02/formatfilter-and-mediatypemappings-in-asp-net-core-1-0-mvc/</link>
      <pubDate>Fri, 05 Feb 2016 20:13:34 +0000</pubDate>
      
      <guid>https://www.strathweb.com/2016/02/formatfilter-and-mediatypemappings-in-asp-net-core-1-0-mvc/</guid>
      <description>&lt;p&gt;In the earlier posts, we looked at how &lt;a href=&#34;https://www.strathweb.com/2014/11/formatters-asp-net-mvc-6/&#34;&gt;formatters work in general&lt;/a&gt; in the upcoming MVC Core 1.0 (although at that time it was still being referred to as MVC 6) and how &lt;a href=&#34;https://www.strathweb.com/2015/04/asp-net-mvc-6-formatters-xml-browser-requests/&#34;&gt;XML formatters&lt;/a&gt; can be enabled in your ASP.NET Core application.&lt;/p&gt;
&lt;p&gt;This time around, I thought it would be interesting to follow up on that, and discuss another topic that should be very familiar to folks with ASP.NET Web API experience - &lt;em&gt;MediaTypeMappings&lt;/em&gt;. They were quite commonly used in Web API, and they have been ported over to MVC Core, and can be enabled via a &lt;em&gt;FormatFilter&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
