Resolving Client IP Addresses in .NET with Azure Front Door
The X-Forwarded-For Header For situations where knowing the originating public IP (or host name) of a request is needed, .NET provides the Connection property on HttpContext, with a RemoteIpAddress value. Under normal circumstances this is set directly from the incoming request. For example, when running locally under Kestrel this will normally show up as [::1] (IPV6 localhost). Often, modern web apps aren’t serving requests directly but through proxies that can provide security, scalability, or other benefits, like an Azure Front Door CDN....
Controlling Execution Flow While Producing IAsyncEnumerable Sequences
Producing IAsyncEnumerable The introduction of IAsyncEnumerable to C# allowed for simplifying a lot of scenarios that used to require a lot of code to get async behavior similar to an equivalent synchronous scenario. The await foreach construction specifically makes the consumption side almost trivial. The combination of the delayed execution of IEnumerable and asynchrony does add some complexity though, which can often come into play on the side of producing the async collection and trying to build control flow or error handling into the process....
Executing Multiple Operations with the Azure Cosmos DB Desktop Data Migration Tool
The Tool I’ve been working as part of the team developing the new Azure Cosmos DB Data Migration Tool, available to download now from GitHub. More about the tool itself and the basics of usage can be found in the announcement blog post. In addition to the basic features for doing 1-to-1 transfers between a single source and sink, we also added a more advanced configuration to transfer multiple data sets at once....
Structuring a Maintainable Console App with System.CommandLine
System.CommandLine as a Starting Point Writing console apps from scratch can involve a lot of messing around with boilerplate code just to get basic user input and take advantage of basic features like logging and configuration that come more or less for free in an AspNetCore web app. Adding in features normally found in command line apps like parsing input parameters commands and options or displaying help text to guide users adds on even more work before getting to the app’s core functionality....
Blazor WASM Initial Load Time Performance - Authentication
Part of a series on Blazor WASM initial load performance Server Prerendering Improving Data Loading Authentication In Prerendering Part 3: Authentication In Prerendering The changes already shown in the previous posts have made for a fast initial page load with data showing when available but so far everything being done has been anonymous pages. What if that initial page load also needs to be authenticated? According to the docs for Prerendering and docs for WASM security it is isn’t supported for authentication endpoints (/authentication/ path segment)....