<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[ASP DOTNET - Medium]]></title>
        <description><![CDATA[.NET is a powerful, open-source, cross-platform framework designed for building robust applications. With support for web, mobile, desktop, and cloud development, it provides tools like ASP.NET Core for scalable APIs, Blazor for interactive UIs, and MAUI for cross-platform apps. - Medium]]></description>
        <link>https://medium.com/asp-dotnet?source=rss----9d06058c8f80---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>ASP DOTNET - Medium</title>
            <link>https://medium.com/asp-dotnet?source=rss----9d06058c8f80---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 19:04:11 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/asp-dotnet" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Swagger Is No Longer in .NET- What API Architects Should Do Instead]]></title>
            <link>https://medium.com/asp-dotnet/swagger-is-no-longer-in-net-what-api-architects-should-do-instead-162d1ad0652e?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/162d1ad0652e</guid>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Sat, 19 Sep 2026 04:32:41 GMT</pubDate>
            <atom:updated>2026-09-19T04:32:40.911Z</atom:updated>
            <content:encoded><![CDATA[<h4>.NET 9 removing Swashbuckle from the default Web API template; first-party Microsoft.AspNetCore.OpenApi support; the /openapi/{documentName}.json default route. so, as dotnet developer you must know what the solution.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PSeroX56VMNVFnRK4NiKEg.png" /></figure><h3><strong>You create a fresh ASP.NET Core Web API.</strong></h3><p>The application starts correctly.</p><p>Your endpoint responds.</p><p>Then, almost automatically, you type:</p><pre>https://localhost:xxxx/swagger</pre><p>And receive:</p><pre>404 Not Found</pre><p>For developers who have worked with ASP.NET Core for years, the immediate reaction is often that Swagger configuration is broken.</p><p>It probably is not.</p><p>Starting with .NET 9, Microsoft changed the default API documentation architecture. ASP.NET Core now provides first-party OpenAPI generation through Microsoft.AspNetCore.OpenApi, while Swashbuckle is no longer included automatically in the Web API template. Swashbuckle still exists and can still be installed, but it is no longer the template&#39;s default solution.</p><p>That sounds like a small template change.</p><p>Architecturally, however, it reflects a useful separation of concerns.</p><h3>The Important Change Is Not Really About Swagger</h3><p>For years, developers commonly used the word <em>Swagger</em> to mean several different things:</p><ul><li>API specification</li><li>generated JSON</li><li>documentation</li><li>browser UI</li><li>interactive testing</li></ul><p>Those are separate responsibilities.</p><p>.NET 9 makes that separation much harder to ignore.</p><p>A modern API documentation stack can be viewed as three layers:</p><pre>Your ASP.NET Core API<br>        ↓<br>OpenAPI document<br>        ↓<br>Documentation / testing UI</pre><p>The UI might be:</p><pre>Scalar<br>Swagger UI<br>NSwag<br>Redoc<br>Custom developer portal<br>API gateway portal</pre><p>The underlying contract does not have to change.</p><p>That distinction is much more important for enterprise systems than deciding whether one interface looks better than another.</p><h3>OpenAPI Is the Contract</h3><p>OpenAPI is a language-independent specification describing an HTTP API.</p><p>It can describe things such as:</p><ul><li>endpoints,</li><li>HTTP methods,</li><li>parameters,</li><li>request bodies,</li><li>response structures,</li><li>schems,</li><li>authentication schemes,</li><li>status codes.</li></ul><p>ASP.NET Core’s first-party OpenAPI support gathers endpoint metadata and converts it into an OpenAPI document.</p><p><strong>A basic .NET 9 application can contain:</strong></p><pre>var builder = WebApplication.CreateBuilder(args);</pre><pre>builder.Services.AddOpenApi();</pre><pre>var app = builder.Build();</pre><pre>if (app.Environment.IsDevelopment())<br>{<br>    app.MapOpenApi();<br>}</pre><pre>app.MapControllers();</pre><pre>app.Run();</pre><p>By default, MapOpenApi() exposes documents under:</p><pre>/openapi/{documentName}.json</pre><p>and the standard default document is commonly available at:</p><pre>/openapi/v1.json</pre><p>Try opening that URL first.</p><p>If the JSON document loads, OpenAPI generation is working.</p><p>What you do <strong>not</strong> automatically have is a graphical documentation application.</p><h3>Documentation UI Is a Consumer, Not the API Contract</h3><p>This is the architectural point many teams miss.</p><p>Swagger UI does not define your API.</p><p>Scalar does not define your API either.</p><p>They consume the OpenAPI description.</p><p>Think about it like this:</p><pre>                         ┌── Scalar<br>                         │<br>ASP.NET API → OpenAPI ───┼── Swagger UI<br>                         │<br>                         ├── Code Generator<br>                         │<br>                         ├── API Gateway<br>                         │<br>                         └── Developer Portal</pre><p>Once an organization treats OpenAPI as the central artifact, replacing the visualization layer becomes relatively straightforward.</p><p>That gives architecture teams flexibility.</p><p>A developer might use Scalar locally.</p><p>QA might import the same contract into Postman.</p><p>A CI/CD pipeline might validate the document.</p><p>An external developer portal might publish it.</p><p>A code-generation process might create client SDKs from it.</p><p>One contract can support many consumers.</p><h3>Adding Scalar to a .NET API</h3><p>Microsoft’s current Minimal API tutorial demonstrates Scalar as one option for rendering the OpenAPI document generated by ASP.NET Core.</p><p>Install:</p><pre>dotnet add package Scalar.AspNetCore</pre><p>Then add:</p><pre>using Scalar.AspNetCore;</pre><p>and configure:</p><pre>if (app.Environment.IsDevelopment())<br>{<br>    app.MapOpenApi();<br>    app.MapScalarApiReference();<br>}</pre><p>With the standard configuration, Microsoft documents the API reference as being available at:</p><pre>/scalar/v1</pre><p>and backed by:</p><pre>/openapi/v1.json</pre><p>That is an important detail because older examples online sometimes refer simply to /scalar.</p><p>Always verify the route against the package version and configuration you are actually using.</p><h3>Why Scalar Is Interesting for Development Teams</h3><p>Scalar is not valuable merely because its interface looks more modern.</p><p>Its more significant advantage is that API documentation and API interaction are brought closer together.</p><p>A developer examining an endpoint can potentially move directly from:</p><pre>Understand endpoint<br>        ↓<br>Inspect schema<br>        ↓<br>Configure authentication<br>        ↓<br>Send request<br>        ↓<br>Inspect response</pre><p>without switching between multiple tools.</p><p>Scalar also supports configuring OpenAPI security schemes and OAuth2 flows, including Authorization Code flows with PKCE.</p><p>For example:</p><pre>app.MapScalarApiReference(options =&gt;<br>    options<br>        .AddPreferredSecuritySchemes(&quot;OAuth2&quot;)<br>        .AddAuthorizationCodeFlow(&quot;OAuth2&quot;, flow =&gt;<br>        {<br>            flow.ClientId = &quot;developer-client&quot;;<br>            flow.Pkce = Pkce.Sha256;<br>            flow.SelectedScopes = [&quot;api.read&quot;];<br>        }));</pre><p>This becomes useful when working with APIs protected by an identity provider rather than a simple static bearer token.</p><h3>But Do Not Confuse Convenience With Security</h3><p>An interactive API reference is extremely convenient.</p><p>That does not mean it should automatically be available publicly.</p><p>For production fintech APIs, documentation exposure needs the same architectural thinking as any other endpoint.</p><p>Consider a payment API exposing operations such as:</p><pre>POST /payments<br>POST /payments/{id}/reverse<br>GET  /accounts/{id}<br>POST /cards/{id}/block<br>POST /transfers</pre><p>Even when authorization protects the underlying transactions, publicly exposing complete schemas and endpoint structures may provide unnecessary reconnaissance information.</p><p>ASP.NET Core allows authorization requirements to be applied to the OpenAPI endpoint because it is mapped as a normal route endpoint. Microsoft specifically documents protecting generated OpenAPI documents using authorization policies.</p><p>A simple policy could therefore look conceptually like:</p><pre>app.MapOpenApi()<br>   .RequireAuthorization(&quot;ApiDocumentation&quot;);</pre><p>The same consideration should be given to your documentation UI.</p><p>For many systems, the simplest policy is still:</p><pre>if (app.Environment.IsDevelopment())<br>{<br>    app.MapOpenApi();<br>    app.MapScalarApiReference();<br>}</pre><p>Production documentation can then live elsewhere.</p><h3>A Better Architecture for Fintech APIs</h3><p>For enterprise APIs, I would avoid treating /scalar or /swagger as the documentation architecture.</p><p>Instead, design several layers.</p><pre>                    ┌────────────────────────────┐<br>                    │ ASP.NET Core Application   │<br>                    └─────────────┬──────────────┘<br>                                  │<br>                           OpenAPI metadata<br>                                  │<br>                    ┌─────────────▼──────────────┐<br>                    │ OpenAPI Contract           │<br>                    └─────────────┬──────────────┘<br>                                  │<br>          ┌───────────────────────┼───────────────────────┐<br>          │                       │                       │<br>          ▼                       ▼                       ▼<br>    Developer UI             CI Validation          API Gateway<br>      Scalar                   / Linting             / Portal<br>          │                       │                       │<br>          ▼                       ▼                       ▼<br> Local testing            Contract governance      External users</pre><p>This creates much clearer responsibilities.</p><p>The application’s responsibility is to describe itself accurately.</p><p>The documentation system’s responsibility is to present that contract.</p><p>The gateway’s responsibility is to publish or restrict APIs.</p><p>CI/CD’s responsibility is to detect contract problems before production.</p><h3>OpenAPI Should Become Part of CI/CD</h3><p>This is where the .NET 9 approach becomes more interesting for architects.</p><p>Do not think only about generating OpenAPI at runtime.</p><p>Think about using the specification as a build artifact.</p><p>For example:</p><pre>Developer pushes API change<br>          ↓<br>Build application<br>          ↓<br>Generate OpenAPI document<br>          ↓<br>Validate OpenAPI<br>          ↓<br>Detect breaking contract changes<br>          ↓<br>Security checks<br>          ↓<br>Generate SDK<br>          ↓<br>Publish documentation<br>          ↓<br>Deploy</pre><p>Microsoft’s OpenAPI tooling also supports generating OpenAPI documents during the build process through Microsoft.Extensions.ApiDescription.Server.</p><p>That creates opportunities for governance.</p><p>A banking organization could block a release when:</p><pre>Required response field removed<br>Authentication definition disappears<br>Invalid schema introduced<br>API version changes unexpectedly<br>PCI-sensitive field appears in response<br>Breaking contract detected</pre><p>Now OpenAPI becomes more than documentation.</p><p>It becomes part of release control.</p><h3>Metadata Quality Matters More Than the UI</h3><p>There is another consequence.</p><p>A beautiful Scalar page cannot compensate for poor endpoint metadata.</p><p>Suppose your controller says:</p><pre>[HttpPost]<br>public IActionResult Process(RequestDto request)<br>{<br>    ...<br>}</pre><p>The generated document may technically exist, but developers may still have no idea:</p><ul><li>what the operation actually does,</li><li>which status codes are possible,</li><li>whether the operation is idempotent,</li><li>what authentication is required,</li><li>what business validation can fail.</li></ul><p>ASP.NET Core can derive OpenAPI information from endpoint metadata, controller attributes and Minimal API constructs such as typed results.</p><p>Therefore API design should include meaningful documentation metadata.</p><p>For example:</p><pre>[HttpPost(&quot;payments&quot;)]<br>[ProducesResponseType&lt;PaymentResponse&gt;(StatusCodes.Status201Created)]<br>[ProducesResponseType&lt;ErrorResponse&gt;(StatusCodes.Status400BadRequest)]<br>[ProducesResponseType&lt;ErrorResponse&gt;(StatusCodes.Status401Unauthorized)]<br>[ProducesResponseType&lt;ErrorResponse&gt;(StatusCodes.Status409Conflict)]<br>public async Task&lt;IActionResult&gt; CreatePayment(...)</pre><p>That provides value regardless of whether the consumer is Scalar, Swagger UI, an SDK generator or an API governance platform.</p><h3>Do You Need to Remove Swagger?</h3><p>No.</p><p>This change does <strong>not</strong> mean Swagger UI is obsolete.</p><p>Microsoft explicitly states that Swashbuckle remains available as a community package for .NET 9 and later.</p><p>If an organization has existing tooling built around Swagger UI, there may be no business reason to migrate immediately.</p><p>You can continue using it.</p><p>Similarly, NSwag remains another available ecosystem option.</p><p>The architectural choice should depend on your requirements rather than template fashion.</p><p>Use Swagger UI when existing processes and tooling already depend on it.</p><p>Use Scalar when its developer experience and API-client capabilities fit your team.</p><p>Use neither publicly if your production documentation belongs in an authenticated developer portal or API-management platform.</p><p>The important decision is maintaining a reliable OpenAPI contract underneath all of them.</p><h3>What I Would Use for a New .NET 9/10 Fintech API</h3><p>For a greenfield financial API, a practical baseline could be:</p><pre>ASP.NET Core<br>    │<br>    ├── Microsoft.AspNetCore.OpenApi<br>    │<br>    ├── OpenAPI transformers<br>    │<br>    ├── Scalar for local development<br>    │<br>    ├── OAuth2 / OIDC<br>    │<br>    └── Production API gateway<br>             │<br>             ├── Authentication<br>             ├── Rate limiting<br>             ├── Audit<br>             ├── Developer portal<br>             └── API analytics</pre><p>Then establish these rules:</p><p><strong>Development</strong></p><pre>OpenAPI endpoint enabled<br>Scalar enabled<br>Developer authentication available</pre><p><strong>Testing/UAT</strong></p><pre>OpenAPI restricted<br>API reference authenticated<br>Contract validation enabled</pre><p><strong>Production</strong></p><pre>OpenAPI either disabled or access controlled<br>Interactive reference restricted<br>Published contracts managed through API governance</pre><p>That is much stronger than simply asking whether Swagger should be enabled.</p><h3>Conclusion</h3><p>The disappearance of /swagger from a fresh .NET 9 application is not an API failure.</p><p>It represents a cleaner architecture.</p><p>Microsoft now provides the OpenAPI generation layer directly, while allowing teams to choose how that contract should be rendered and consumed.</p><p>Scalar is an attractive option because it combines readable documentation with interactive API-client capabilities. Swagger UI remains available. NSwag remains available. Other documentation systems can consume the same OpenAPI contract.</p><p>But for software architects — especially those building banking, payments, wallet, card, settlement or integration platforms — the larger lesson is more important:</p><p><strong>Stop designing API documentation around a UI. Design around the API contract.</strong></p><p>Treat OpenAPI as a governed engineering artifact.</p><p>Generate it consistently.</p><p>Validate it during CI/CD.</p><p>Protect it appropriately.</p><p>Use it for integration testing.</p><p>Use it for SDK generation.</p><p>Feed it into your API gateway and developer portal.</p><p>Then let Scalar, Swagger UI, or any future renderer become what it should have been all along:</p><p><strong>a view over the contract, rather than the contract itself.</strong></p><p>I offered you others’ Medium articles: <a href="https://medium.com/@hasanmcse">Visit My Profile</a></p><p>Also, my GitHub: <a href="https://github.com/hasanmonsur">Md Hasan Monsur</a></p><p>Connect with me at LinkedIn: <a href="https://www.linkedin.com/in/hasan-monsur/">Md Hasan Monsur</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=162d1ad0652e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/asp-dotnet/swagger-is-no-longer-in-net-what-api-architects-should-do-instead-162d1ad0652e">Swagger Is No Longer in .NET- What API Architects Should Do Instead</a> was originally published in <a href="https://medium.com/asp-dotnet">ASP DOTNET</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Puppeteer Web Scraping: Features, Benefits & Automation Examples]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/puppeteer-web-scraping-features-benefits-automation-examples-3e1e428c1ef4?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1440/1*31IldOAkuf_zetPgygO7Og.jpeg" width="1440"></a></p><p class="medium-feed-snippet">Ever wondered why so many developers rely on Puppeteer for browser automation? From scraping websites and running automated tests to&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/puppeteer-web-scraping-features-benefits-automation-examples-3e1e428c1ef4?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/puppeteer-web-scraping-features-benefits-automation-examples-3e1e428c1ef4?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/3e1e428c1ef4</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[puppeteer]]></category>
            <category><![CDATA[web-scraping]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[dotnet]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Fri, 06 Mar 2026 15:59:51 GMT</pubDate>
            <atom:updated>2026-03-06T15:59:52.633Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[HTML to PDF Generation using IronPDF in Web API]]></title>
            <link>https://medium.com/asp-dotnet/html-to-pdf-generation-using-ironpdf-in-web-api-a73043a1cbc5?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/a73043a1cbc5</guid>
            <category><![CDATA[dotnet]]></category>
            <category><![CDATA[webapi]]></category>
            <category><![CDATA[ironpdf]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[html-to-pdf]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Sun, 25 Jan 2026 08:50:15 GMT</pubDate>
            <atom:updated>2026-01-25T08:50:12.913Z</atom:updated>
            <content:encoded><![CDATA[<h4>While the <a href="https://github.com/rdvojmoc/DinkToPdf">DinkToPdf</a> library is a popular option for HTML to PDF conversion, <a href="https://ironpdf.com">IronPDF</a> offers a robust, modern alternative that supports the latest version of .NET, requires no external dependencies like the Webkit engine, and includes out-of-the-box support for advanced features like JavaScript rendering, custom fonts, and PDF/A generation. In this section, we’ll walk through creating the same <a href="https://ironpdf.com/how-to/csharp-pdf-reports">report generation service</a> using IronPDF within .NET 8 Web API project.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DDNWb0v2oUICqyB97Cdg-A.png" /></figure><p>“Check out my stories on Medium! Proud to be a Friend of Medium supporting writers 🌟”</p><h3>Prerequisites</h3><ul><li>.NET 8 SDK installed</li><li>Visual Studio 2022 or your preferred IDE</li><li>Installed IronPDF via NuGet</li></ul><pre>dotnet new webapi -n IronPdfExample<br><br>dotnet add Package IronPdf</pre><h3>Step 1: HTML Template Setup</h3><p>As with the DinkToPdf version, add an HTML file in a folder named Templates. <strong>Templates/ReportTemplate.html</strong> (same as before).</p><h3>Step 2: Create the PDF Generation Service with IronPDF</h3><p>Create a folder named Services and add a class <strong>IronPdfReportService.cs</strong></p><pre>namespace IronPdfExample.Services<br>{<br>    public class IronPdfReportService<br>    {<br>        private readonly ChromePdfRenderer _renderer;<br><br>        public IronPdfReportService()<br>        {<br>            _renderer = new ChromePdfRenderer();<br>        }<br><br>        public byte[] GeneratePdf(string htmlContent)<br>        {<br>            using var pdf = _renderer.RenderHtmlAsPdf(htmlContent);<br>            return pdf.BinaryData;<br>        }<br>    }<br><br>}</pre><p>This uses IronPDF’s ChromePdfRenderer, which simulates a full Chromium browser internally, elimiting the need for separate browser installs or external renderers.</p><h3>Step 3: Register the Service in Program.cs</h3><pre>builder.Services.AddScoped&lt;IronPdfReportService&gt;();</pre><h3>Step 4: Create the Controller</h3><p>Add an endpoint for IronPDF-based generation in the same <strong>ReportController.cs</strong> or in a separate controller if preferred:</p><pre>using IronPdfExample.Services;<br>using Microsoft.AspNetCore.Mvc;<br>using IronPdf;<br><br>namespace IronPdfExample.Controllers<br>{<br>    [ApiController]<br>    [Route(&quot;api/[controller]&quot;)]<br>    public class ReportController : ControllerBase<br>    {<br>        private readonly IronPdfReportService _pdfService;<br><br>        public ReportController(IronPdfReportService pdfService)<br>        {<br>            _pdfService = pdfService;<br>        }<br><br>        [HttpGet(&quot;generate-ironpdf&quot;)]<br>        public IActionResult GenerateIronPdfReport()<br>        {<br>            var htmlPath = Path.Combine(Directory.GetCurrentDirectory(), &quot;Templates&quot;, &quot;ReportTemplate.html&quot;);<br><br>            if (!System.IO.File.Exists(htmlPath))<br>                return NotFound(&quot;HTML template not found.&quot;);<br><br>            var htmlContent = System.IO.File.ReadAllText(htmlPath);<br>            var pdfBytes = _pdfService.GeneratePdf(htmlContent);<br><br>            return File(pdfBytes, &quot;application/pdf&quot;, &quot;report-ironpdf.pdf&quot;);<br>        }<br>    }<br>}</pre><h3>Step 5: Run and Test the Endpoint</h3><p>Run the Web API:</p><pre>dotnet run</pre><p>Then navigate to:</p><pre>https://localhost:{PORT}/api/report/generate-ironpdf</pre><h4>PDF Output</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zLhcQKm1xMvFGMq7V9cz0Q.png" /></figure><h3>Why Choose IronPDF?</h3><ul><li>No external dependencies (no WkHtmlToPdf library or Webkit)</li><li>Better JavaScript and CSS support via real browser rendering</li><li>Commercial support and active development</li><li>PDF/A, security, watermarking, digital signatures, and more</li><li>Native .NET 8 support with minimal configuration</li></ul><h3>Conclusion:</h3><h4>Which to Choose?</h4><p>Both DinkToPdf and IronPDF are capable tools for HTML to PDF conversion, but your choice will depend on your project needs:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/662/1*5OJdBqjtNkBjj8jG0TY6yw.png" /></figure><p><a href="https://ironpdf.com">IronPDF</a> is a great choice for production-grade solutions where reliability, support, and advanced features are essential.</p><h4>Try IronPDF for Free : Want to try IronPDF in your project? <a href="https://shorturl.at/NRHjYhttps://shorturl.at/NRHjY">Download the free trial here.</a></h4><p>I offered you others medium article: <a href="https://medium.com/@hasanmcse">Visit My Profile</a></p><p>also, My GitHub : <a href="https://github.com/hasanmonsur">Md Hasan Monsur</a></p><p>Connect with me at LinkedIn : <a href="https://www.linkedin.com/in/hasan-monsur/">Md Hasan Monsur</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a73043a1cbc5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/asp-dotnet/html-to-pdf-generation-using-ironpdf-in-web-api-a73043a1cbc5">HTML to PDF Generation using IronPDF in Web API</a> was originally published in <a href="https://medium.com/asp-dotnet">ASP DOTNET</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build a .NET Web API Using for High-Speed I/O and Massive Transactions]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/build-a-net-web-api-using-for-high-speed-i-o-and-massive-transactions-83ffd25fb854?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1600/1*fgJbtzK2PTTU83qK--Q7AQ.png" width="1600"></a></p><p class="medium-feed-snippet">Building a&#xA0;.NET Web API that supports high-speed I/O and massive transaction volumes is essential for modern systems that demand real-time&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/build-a-net-web-api-using-for-high-speed-i-o-and-massive-transactions-83ffd25fb854?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/build-a-net-web-api-using-for-high-speed-i-o-and-massive-transactions-83ffd25fb854?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/83ffd25fb854</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[webapi]]></category>
            <category><![CDATA[redis]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Sun, 25 Jan 2026 08:49:50 GMT</pubDate>
            <atom:updated>2026-01-25T08:49:49.265Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Building a High-Performance .NET Core 8 Web API with PostgreSQL and Redis]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/building-a-high-performance-net-core-8-web-api-with-postgresql-and-redis-aaf56d0e23f4?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1600/1*XhIw6Zf6gp-Xe-woUCkY_w.png" width="1600"></a></p><p class="medium-feed-snippet">In this tutorial, you&#x2019;ll learn how to build a high-performance&#xA0;.NET Core 8 Web API with PostgreSQL for data persistence and Redis for&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/building-a-high-performance-net-core-8-web-api-with-postgresql-and-redis-aaf56d0e23f4?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/building-a-high-performance-net-core-8-web-api-with-postgresql-and-redis-aaf56d0e23f4?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/aaf56d0e23f4</guid>
            <category><![CDATA[dotnet]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[postgresql]]></category>
            <category><![CDATA[webapi]]></category>
            <category><![CDATA[redis]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Sun, 25 Jan 2026 08:49:44 GMT</pubDate>
            <atom:updated>2026-01-25T08:49:26.942Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Strengthening Your API: Why Broader OWASP Compliance Matters for Modern Security]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/strengthening-your-api-why-broader-owasp-compliance-matters-for-modern-security-3a901db2b783?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1600/1*HmSvrC66Y5GP0vjEpHMHJw.png" width="1600"></a></p><p class="medium-feed-snippet">As APIs handle more critical data, basic safeguards are no longer enough. Broader OWASP compliance helps teams address hidden risks&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/strengthening-your-api-why-broader-owasp-compliance-matters-for-modern-security-3a901db2b783?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/strengthening-your-api-why-broader-owasp-compliance-matters-for-modern-security-3a901db2b783?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/3a901db2b783</guid>
            <category><![CDATA[rest-api]]></category>
            <category><![CDATA[dotnet]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[api-security]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Sun, 25 Jan 2026 08:49:16 GMT</pubDate>
            <atom:updated>2026-01-25T08:49:15.138Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Basic OWASP-Aligned Web API Security: A Practical Guide]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/basic-owasp-aligned-web-api-security-a-practical-guide-ef212aab735b?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1600/1*G39sFtHRzLeO7T7f3lMv3w.png" width="1600"></a></p><p class="medium-feed-snippet">Web APIs have become the backbone of today&#x2019;s digital applications. From fintech to e-commerce and mobile apps, almost every system relies&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/basic-owasp-aligned-web-api-security-a-practical-guide-ef212aab735b?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/basic-owasp-aligned-web-api-security-a-practical-guide-ef212aab735b?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/ef212aab735b</guid>
            <category><![CDATA[api-security]]></category>
            <category><![CDATA[api-development]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[basic-top-api-security]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Sun, 25 Jan 2026 08:48:54 GMT</pubDate>
            <atom:updated>2026-01-25T08:48:57.472Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[mTLS in Zero-Trust Architecture: Securing Enterprise APIs]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/mtls-in-zero-trust-architecture-securing-enterprise-apis-1b057d71f7bb?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1600/1*ug6o9vHYVv38t0Si_s5qHA.png" width="1600"></a></p><p class="medium-feed-snippet">Discover how mutual TLS strengthens zero-trust architecture by enforcing strict system identity, encrypting every API call, and&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/mtls-in-zero-trust-architecture-securing-enterprise-apis-1b057d71f7bb?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/mtls-in-zero-trust-architecture-securing-enterprise-apis-1b057d71f7bb?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/1b057d71f7bb</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[api-security]]></category>
            <category><![CDATA[mtls-authentication]]></category>
            <category><![CDATA[tlm]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Sat, 24 Jan 2026 19:04:20 GMT</pubDate>
            <atom:updated>2026-01-24T19:04:18.869Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[DuckDB and Nice Features also Uses]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/duckdb-and-nice-features-also-uses-859b27f55679?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1600/1*bdp5pcUZaJGczlAHfn1j2Q.png" width="1600"></a></p><p class="medium-feed-snippet">DuckDB is an open-source, embedded, in-process, relational OnLine Analytical Processing (OLAP) database management system. It is designed&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/duckdb-and-nice-features-also-uses-859b27f55679?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/duckdb-and-nice-features-also-uses-859b27f55679?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/859b27f55679</guid>
            <category><![CDATA[rdbms]]></category>
            <category><![CDATA[lightdb]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[duckdb]]></category>
            <category><![CDATA[embedded-systems]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Tue, 09 Dec 2025 12:35:27 GMT</pubDate>
            <atom:updated>2025-12-09T12:35:26.126Z</atom:updated>
            <cc:license>https://creativecommons.org/licenses/by-sa/4.0/</cc:license>
        </item>
        <item>
            <title><![CDATA[Microservice: Dapr, Dapper, and PostgreSQL (.NET 10)]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/asp-dotnet/microservice-dapr-dapper-and-postgresql-net-10-66597c0fa6ad?source=rss----9d06058c8f80---4"><img src="https://cdn-images-1.medium.com/max/1600/1*rfKFqCaaUUaJ2ja4--s8Rw.png" width="1600"></a></p><p class="medium-feed-snippet">This article for you&#xA0;, if you are trying to develop next-Generation application with handle high performance enterprise solution. in this&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/asp-dotnet/microservice-dapr-dapper-and-postgresql-net-10-66597c0fa6ad?source=rss----9d06058c8f80---4">Continue reading on ASP DOTNET »</a></p></div>]]></description>
            <link>https://medium.com/asp-dotnet/microservice-dapr-dapper-and-postgresql-net-10-66597c0fa6ad?source=rss----9d06058c8f80---4</link>
            <guid isPermaLink="false">https://medium.com/p/66597c0fa6ad</guid>
            <category><![CDATA[dapr-with-pos-system]]></category>
            <category><![CDATA[dotnet]]></category>
            <category><![CDATA[dapr]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[developer]]></category>
            <dc:creator><![CDATA[Engr. Md. Hasan Monsur]]></dc:creator>
            <pubDate>Tue, 09 Dec 2025 12:35:09 GMT</pubDate>
            <atom:updated>2025-12-09T12:35:08.222Z</atom:updated>
        </item>
    </channel>
</rss>