Setup a Static IP for .NET HTTPS

Learn how to route .NET HTTP traffic through a QuotaGuard Static IP proxy. Includes C# code examples and Dockerfile.

Prerequisites

N/A

Instructions

Test in Docker
docker build -t qg-static-dotnet-https-example .
docker run -e QUOTAGUARDSTATIC_URL=... qg-static-dotnet-https-example

Code Samples

Program.cs
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var proxyUrl = Environment.GetEnvironmentVariable("QUOTAGUARDSTATIC_URL");
        var testUrl = "https://ip.quotaguard.com/";

        if (string.IsNullOrEmpty(proxyUrl))
        {
            Console.WriteLine("Error: QUOTAGUARDSTATIC_URL environment variable not set.");
            return;
        }

        try
        {
            var proxyUri = new Uri(proxyUrl);
            var proxy = new WebProxy(proxyUri.Host, proxyUri.Port)
            {
                Credentials = new NetworkCredential(
                    proxyUri.UserInfo.Split(':')[0],
                    proxyUri.UserInfo.Split(':')[1]
                )
            };

            var handler = new HttpClientHandler
            {
                Proxy = proxy,
                UseProxy = true
            };

            using var client = new HttpClient(handler);
            var response = await client.GetAsync(testUrl);
            var body = await response.Content.ReadAsStringAsync();

            Console.WriteLine("Response from QuotaGuard:");
            Console.WriteLine(body);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Request failed:");
            Console.WriteLine(ex.Message);
        }
    }
}
ProxyTest.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
Docker File
# Stage 1: Build
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /app

COPY ProxyTest.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

# Stage 2: Runtime
FROM mcr.microsoft.com/dotnet/runtime:6.0
WORKDIR /app

COPY --from=build /app/out ./
ENTRYPOINT ["dotnet", "ProxyTest.dll"]