【发布时间】:2021-05-04 09:54:42
【问题描述】:
我正在尝试为旧的 .net 框架应用程序(.net 框架 4.6)创建一个工作 docker 映像 到目前为止我做了什么:
- 我将 Windows 10 上的 Docker 桌面从 Linux 容器切换到 Windows
- 我通过右键单击“发布”将应用程序部署到目录中
- 创建构建并运行的 docker 文件
我苦苦挣扎的地方是执行应用程序。 IIS 无法识别应用程序并引发 500 内部服务器错误。
这是我的 docker 文件。
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
为了修复错误,我尝试了以下方法:
- 尝试使用 .net 框架 4.8 和 4.6.2 的图像
- 更改了
connectionstrings - 将
CustomErrors设置为Off - 将
wwwroot/inetpub文件夹中文件的权限设置为所有人和完全
不幸的是,我得到了相同的结果。它似乎无法识别该应用程序。我什至很难获得第一个登录页面,因为我在偶数日志中看不到任何内容。
非常感谢任何帮助。提前致谢!
编辑 1:
- 直接从容器调用Invoke-WebRequest时出现Http错误信息。
- 修复了 .net 框架版本
【问题讨论】:
-
您需要获取容器内部的错误页面,以便了解详细的错误信息(或使用appcmd/PowerShell修改IIS设置远程显示详细错误页面),docs.microsoft.com/en-us/iis/configuration/system.webserver/…
-
.net framework 4.8.2 不存在
-
“这是我的 docker 文件。” 这是你的整个 dockerfile 吗?它缺少运行命令,例如
CMD ["dotnet", "yourproject.dll"] -
感谢@LexLi 我执行了命令,但仍然从外部得到相同的错误。直接从容器调用它时出现不同的错误。添加了上面的消息。
-
@PavelAnikhouski,已修复
标签: asp.net .net docker iis http-status-code-500