7

I am having a problem when running one of my solutions in Docker Desktop for Windows. I use the following dockerfile:

# escape=`
FROM microsoft/iis
SHELL ["powershell", "-command"]
# Install ASP.NET
RUN Install-WindowsFeature NET-Framework-45-ASPNET; `  
    Install-WindowsFeature Web-Asp-Net45
# Configure website
EXPOSE 8000  
RUN Remove-Website -Name 'Default Web Site'; `  
md c:\barometer; `
New-Website -Name 'barometer' `
            -Port 8000 -PhysicalPath 'c:\barometer' `
            -ApplicationPool '.NET v4.5'
COPY PublishOutput c:\barometer

My build steps are as follows:

docker build -t mvcbarometer .
docker run -d --name barometer mvcbarometer
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" barometer

Everything builds fine, but i get the following error when visiting the site: "There is a problem with the resource you are looking for, and it cannot be displayed."

- http://imgur.com/a/areF8

For some reason i cannot get the classic yellow error page that is shown when debugging through visual studio, even though i am using the same configuration.

It does not seem like docker logs any errors anywhere, so i am kinda stuck at debugging the problem. My other (more basic) projects works fine with a similar docker build setup.

I read somewhere that docker has problems with certain web.config elements, but i cannot find any real documentation on the subject.

Could anyone help me with debugging the problem?

veben
  • 19,637
  • 14
  • 60
  • 80
antontj
  • 161
  • 1
  • 10

3 Answers3

8

I finally found the problem. I was using url rewrite 2.0 functionality, but forgot to install it in the docker image.

Adding the following to my docker file solved the problem:

# Install Url Rewrite
ADD https://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi /install/rewrite_amd64.msi
RUN msiexec.exe /i c:\install\rewrite_amd64.msi /passive
antontj
  • 161
  • 1
  • 10
  • 5
    How did you debug the issue? Did you find logs somewhere? – willem Oct 19 '18 at 12:38
  • ADD https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi /install/rewrite_amd64.msi RUN msiexec.exe /i c:\install\rewrite_amd64.msi /passive => 2020/09 – Hieu Le Sep 12 '20 at 13:41
2

It seems iis lacks access permissions to the directory. Try to copy wwwroot directory permissions and assign it to the new site.

RUN Set-Acl -Path c:\barometer -AclObject (Get-Acl -Path "C:\inetpub\wwwroot");
  • The addition of "RUN Set-Acl -Path c:\barometer -AclObject (Get-Acl -Path "C:\inetpub\wwwroot");" to the docker file changed nothing. As stated in the original post: "My other (more basic) projects works fine with a similar docker build setup.", why i assume that all permissions to the folder must be correct. – antontj Apr 21 '17 at 11:56
0

Could anyone help me with debugging the problem?

I had the same trouble debugging an ASP.NET app in Docker. I found the answer here.

<configuration>
  <system.webServer>
    <httpErrors errorMode="Detailed" />
  </system.webServer>
</configuration>
Jared
  • 1,385
  • 11
  • 21