首页 > 解决方案 > Docker .net 框架应用程序

问题描述

我正在尝试为遗留的 .net 框架应用程序(.net 框架 4.6)创建一个工作的 docker 映像到目前为止我做了什么:

我苦苦挣扎的地方是执行应用程序。IIS 无法识别应用程序并引发 500 内部服务器错误。

这是我的码头文件。

FROM mcr.microsoft.com/windows/servercore/iis

RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*

WORKDIR /inetpub/wwwroot

COPY . .

我从https://hub.docker.com/_/microsoft-windows-servercore-iis获取了说明。

在浏览器中导航到页面时,运行容器时出现的错误如下。localhost:8000/application/admin

在此处输入图像描述

为了修复错误,我尝试了以下方法:

不幸的是,我得到了相同的结果。它似乎无法识别该应用程序。我什至很难获得第一个登录页面,因为我在偶数日志中看不到任何内容。

我将非常感谢任何帮助。提前致谢!

编辑1:

在此处输入图像描述

标签: asp.net.netdockeriishttp-status-code-500

解决方案


感谢所有的帮助。它为我指明了正确的方向。必须安装 url re-write 和一些 IIS 模块才能使应用程序正常工作。此外,我在 Docker 桌面混合模式下遇到了 SQL Server linux 映像的问题。但是有一个旧版本的适用于 Windows 的 SQL Server 可以正常工作。https://hub.docker.com/r/microsoft/mssql-server-windows-developer

这是我的码头文件,我希望它可以帮助别人

FROM mcr.microsoft.com/windows/servercore/iis

RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*

RUN powershell -Command Invoke-WebRequest http://download.microsoft.com/download/D/D/E/DDE57C26-C62C-4C59-A1BB-31D58B36ADA2/rewrite_amd64_en-US.msi -OutFile c:/inetpub/rewrite_amd64_en-US.msi
RUN powershell -Command Start-Process c:/inetpub/rewrite_amd64_en-US.msi -ArgumentList "/qn" -Wait

RUN cmd /c C:\Windows\system32\inetsrv\appcmd.exe  unlock config -section:system.webServer/handlers
RUN cmd /c C:\Windows\system32\inetsrv\appcmd.exe set apppool /apppool.name:DefaultAppPool /enable32BitAppOnWin64:true

RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServer
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-CommonHttpFeatures
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpErrors
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpRedirect
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationDevelopment
RUN powershell -Command Enable-WindowsOptionalFeature -online -FeatureName NetFx4Extended-ASPNET45
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-NetFxExtensibility45
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HealthAndDiagnostics
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpLogging
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-LoggingLibraries
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-RequestMonitor
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpTracing
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-Security
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-RequestFiltering
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-Performance
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerManagementTools
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-Metabase
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-StaticContent
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-DefaultDocument
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebSockets
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationInit
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ISAPIExtensions
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ISAPIFilter
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpCompressionStatic
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET45

WORKDIR /inetpub/wwwroot

COPY . .

RUN cmd /c icacls C:/inetpub/wwwroot /grant:r Everyone:F /t

推荐阅读