Developer Guide
Deployment
IIS (Windows Server)
1. Publish
dotnet publish -c Release -o publish
2. Install Chromium
cd publish
$env:NODE_SKIP_PLATFORM_CHECK = "1"
powershell -ExecutionPolicy Bypass -File playwright.ps1 install chromium
3. Copy Chromium to system profile (IIS)
$src = "$env:LOCALAPPDATA\ms-playwright\chromium-1217"
$dst = "C:\Windows\system32\config\systemprofile\AppData\Local\ms-playwright\chromium-1217"
New-Item -ItemType Directory -Path $dst -Force
Copy-Item -Path $src -Destination $dst -Recurse -Force
4. Grant IIS permissions
$acl = Get-Acl "C:\Windows\system32\config\systemprofile\AppData\Local\ms-playwright"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS_IUSRS","FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Set-Acl "C:\Windows\system32\config\systemprofile\AppData\Local\ms-playwright" $acl
5. Configure IIS
- Open IIS Manager -> Add Website
- Set Physical path to publish folder
- Set .NET CLR Version to
No Managed Codein App Pool - Set Cloudflare SSL to Full (not Flexible)
Windows Server 2016 — Special setup
Windows Server 2016 requires an older Chromium build. See PDF & Chromium for the full WS2016 workaround.
Docker
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
RUN apt-get update && apt-get install -y \
libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 \
libgbm1 libgtk-3-0 libasound2 \
&& rm -rf /var/lib/apt/lists/*
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
EXPOSE 8080
ENTRYPOINT ["dotnet", "YourApp.dll"]
Next: License