我在Docker Desktop for Windows中运行我的一个解决方案时遇到问题。我使用以下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
我的构建步骤如下:
docker build -t mvcbarometer .
docker run -d --name barometer mvcbarometer
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" barometer
一切都很好,但访问网站时出现以下错误:“您正在寻找的资源存在问题,无法显示。”
出于某种原因,我无法获得通过visual studio调试时显示的经典黄色错误页面,即使我使用相同的配置。
似乎docker在任何地方都没有记录任何错误,所以我有点坚持调试问题。我的其他(更基本的)项目与类似的docker构建设置一起工作正常。
我在某处看到docker与某些web.config元素有问题,但我找不到关于这个主题的任何真实文档。
任何人都可以帮我调试问题吗?
我终于找到了问题。我正在使用url rewrite 2.0功能,但忘记将它安装在docker镜像中。
将以下内容添加到我的docker文件中解决了以下问题:
# 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
似乎iis缺少对目录的访问权限。尝试复制wwwroot目录权限并将其分配给新站点。
RUN Set-Acl -Path c:\barometer -AclObject (Get-Acl -Path "C:\inetpub\wwwroot");
任何人都可以帮我调试问题吗?
我在Docker中调试ASP.NET应用程序时遇到了同样的问题。我找到了答案here。
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
</system.webServer>
</configuration>