Maintaining Window Size and Position in MAUI Apps on Desktop

MAUI Desktop Windows With roots in Xamarin Forms, MAUI is primarily geared toward mobile OS environments. But with its ability to run on both Windows and Mac desktops it can be a useful option for desktop .NET apps to go cross-platform. Some desktop specific features can be painful to use, or even entirely unavailable, but things are improving with each release. Restoring window sizing and placement across app relaunches is one feature that makes a big usability difference for desktop apps, but doesn’t come for free....

June 17, 2023 · 3 min · 594 words · John Bowen

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....

May 24, 2023 · 6 min · 1187 words · John Bowen

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....

April 26, 2023 · 13 min · 2597 words · John Bowen