<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <atom:link href="https://piotrbach.com/topics/net/rss/" rel="self" type="application/rss+xml" />

        <title>Piotr Bach RSS Feed - .NET</title>

        <link>https://piotrbach.com/topics/net</link>

        <description>Explore practical .NET and ASP.NET Core guides on architecture, APIs, performance, maintainability and production engineering for modern web applications.</description>

        <pubDate>Thu, 16 Jul 2026 09:27:34 GMT</pubDate>

        <lastBuildDate>Thu, 24 Sep 2026 17:41:18 GMT</lastBuildDate>

        <language>en</language>

        <generator>BachPlatform / Umbraco CMS</generator>

            <item>
                <title>ASP.NET Core Architecture: The Decisions That Matter in Production</title>

                <link>https://piotrbach.com/blog/aspnet-core-architecture/</link>

                <description>ASP.NET Core does not force you into one application architecture. That freedom is useful, but it also makes it easy to accumulate layers, abstractions and infrastructure without being clear about the problem each one solves.</description>

                <pubDate>Sat, 22 Aug 2026 10:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/aspnet-core-architecture/</guid>
            </item>
            <item>
                <title>Defensive Programming in .NET: Principles and Examples</title>

                <link>https://piotrbach.com/blog/defensive-programming-in-dotnet/</link>

                <description>A production-focused guide to designing explicit contracts, handling realistic failures, protecting trust boundaries, and recognizing defensive-programming signals during .NET code reviews and technical audits.</description>

                <pubDate>Sun, 16 Aug 2026 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/defensive-programming-in-dotnet/</guid>
            </item>
            <item>
                <title>Enable Brotli and Gzip Compression in ASP.NET Core</title>

                <link>https://piotrbach.com/blog/enable-brotli-gzip-compression-aspnet-core/</link>

                <description>Configure ASP.NET Core Response Compression Middleware for Brotli and Gzip, understand the HTTPS and compression-level trade-offs, and verify the result in the browser.</description>

                <pubDate>Wed, 01 Jan 2025 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/enable-brotli-gzip-compression-aspnet-core/</guid>
            </item>
            <item>
                <title>Send Email with SendGrid SMTP in C# and .NET Framework 4.8</title>

                <link>https://piotrbach.com/blog/send-email-with-sendgrid-smtp-in-csharp-and-net-framework-48/</link>

                <description>Send email through SendGrid&#x27;s SMTP relay from a .NET Framework 4.8 application using System.Net.Mail.SmtpClient. The tested example includes HTML email, attachments, reply-to, TLS, error handling, and sender verification.</description>

                <pubDate>Sun, 10 Nov 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/send-email-with-sendgrid-smtp-in-csharp-and-net-framework-48/</guid>
            </item>
            <item>
                <title>How to Fix SSL Certificate Trust Issues When Connecting to SQL Server</title>

                <link>https://piotrbach.com/blog/how-to-fix-ssl-certificate-trust-issues-when-connecting-to-sql-server/</link>

                <description>Learn how to fix the SQL Server error &#x201C;The certificate chain was issued by an authority that is not trusted&#x201D;, why it has become more common with newer SQL clients, and when TrustServerCertificate=True is an acceptable workaround.</description>

                <pubDate>Sun, 14 Jul 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/how-to-fix-ssl-certificate-trust-issues-when-connecting-to-sql-server/</guid>
            </item>
            <item>
                <title>Fix &#x201C;Syntactically Invalid EHLO Argument&#x201D; SmtpException in C#</title>

                <link>https://piotrbach.com/blog/fix-syntactically-invalid-ehlo-argument-smtpexception-in-csharp/</link>

                <description>If System.Net.Mail.SmtpClient sends an invalid hostname in the SMTP EHLO command, some mail servers reject the connection before the message is sent. Here is how to identify the cause and choose the right fix.</description>

                <pubDate>Tue, 02 Apr 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/fix-syntactically-invalid-ehlo-argument-smtpexception-in-csharp/</guid>
            </item>
            <item>
                <title>How to Create a SQL Server Login for a Windows Domain User with PowerShell</title>

                <link>https://piotrbach.com/blog/how-to-create-a-sql-server-login-for-a-windows-domain-user-with-powershell/</link>

                <description>If an existing Windows domain account receives Login failed for user because SQL Server has no corresponding login, you can create the Windows-authenticated SQL Server login from PowerShell. This article keeps the original SMO-based approach while clarifying the permissions and security implications.</description>

                <pubDate>Sun, 25 Feb 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/how-to-create-a-sql-server-login-for-a-windows-domain-user-with-powershell/</guid>
            </item>
            <item>
                <title>How to Test ASP.NET Core Action Filters with xUnit</title>

                <link>https://piotrbach.com/blog/testing-aspnet-core-action-filters-with-xunit/</link>

                <description>Learn how to unit and integration test ASP.NET Core action filters with xUnit, real filter contexts, short-circuit checks, and WebApplicationFactory.</description>

                <pubDate>Sun, 14 Jan 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/testing-aspnet-core-action-filters-with-xunit/</guid>
            </item>
            <item>
                <title>Implementing Async Action Filters in ASP.NET Core</title>

                <link>https://piotrbach.com/blog/implementing-async-action-filters-in-aspnet-core/</link>

                <description>Learn how IAsyncActionFilter works in ASP.NET Core, when to use it, how to short-circuit safely, inject services, and avoid production mistakes.</description>

                <pubDate>Sat, 13 Jan 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/implementing-async-action-filters-in-aspnet-core/</guid>
            </item>
            <item>
                <title>Authenticate WordPress Users from .NET with JWT REST API</title>

                <link>https://piotrbach.com/blog/authenticate-wordpress-users-from-dotnet-with-jwt-rest-api/</link>

                <description>Authenticate an existing WordPress user from a .NET application by sending the user&#x27;s credentials to the JWT Authentication for WP REST API token endpoint. The flow returns a JWT when WordPress accepts the credentials and can be exercised from C# and xUnit.</description>

                <pubDate>Sun, 19 Nov 2023 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/authenticate-wordpress-users-from-dotnet-with-jwt-rest-api/</guid>
            </item>
    </channel>
</rss>
