Let’s say: we need to add json file extension to the containerized IIS.
Dockerfile:
FROM {imageRegistry}/mcr.microsoft.com/dotnet/framework/aspnet:4.8-20200114-windowsservercore-ltsc2019 COPY . /inetpub/wwwroot WORKDIR /inetpub/wwwroot RUN C:\windows\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"fileExtensions.[fileExtension='json',allowed='True']" ENV ASPNETCORE_URLS http://+:80 EXPOSE 80/tcp
An error occurs during build docker image:
Step 1/6 : FROM repo.q1lan.k8s:9999/mcr.microsoft.com/dotnet/framework/aspnet:4.8-20200114-windowsservercore-ltsc2019 ---> a5bc996f06b3 Step 2/6 : COPY . /inetpub/wwwroot ---> bdb9536e506a Step 3/6 : WORKDIR /inetpub/wwwroot ---> Running in f7666a9ffd0b Removing intermediate container f7666a9ffd0b ---> c9fe76854f6c Step 4/6 : RUN C:\windows\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"fileExtensions.[fileExtension='json',allowed='True']" ---> Running in 1c74d16420c2 Failed to process input: The parameter 'Web' must begin with a / or - (HRESULT=80070057).
Try to escape all double-quotes in Dockerfile:
RUN C:\windows\system32\inetsrv\appcmd.exe set config \"Default Web Site\" -section:system.webServer/security/requestFiltering /+\"fileExtensions.[fileExtension='json',allowed='True']\"
It works like a charm:
Step 1/6 : FROM repo.q1lan.k8s:9999/mcr.microsoft.com/dotnet/framework/aspnet:4.8-20200114-windowsservercore-ltsc2019 ---> a5bc996f06b3 Step 2/6 : COPY . /inetpub/wwwroot ---> 646bbf3d5def Step 3/6 : WORKDIR /inetpub/wwwroot ---> Running in 584471c0524a Removing intermediate container 584471c0524a ---> 54f6a3ade821 Step 4/6 : RUN C:\windows\system32\inetsrv\appcmd.exe set config \"Default Web Site\" -section:system.webServer/security/requestFiltering /+\"fileExtensions.[fileExtension='json',allowed='True']\" ---> Running in f84c38da656a Applied configuration changes to section "system.webServer/security/requestFiltering" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST/Default Web Site" Removing intermediate container f84c38da656a ---> 7dfffe2d9813 Step 5/6 : ENV ASPNETCORE_URLS http://+:80 ---> Running in dff81c8282f1 Removing intermediate container dff81c8282f1 ---> cbd697556dd7 Step 6/6 : EXPOSE 80/tcp ---> Running in d10903bec188 Removing intermediate container d10903bec188 ...