Docker化旧版.net asmx Web服务

问题描述

需要有关对旧版asp.net Web服务进行泊坞的帮助。这似乎是一个非常简单直接的方法,但是我正面临与此有关的问题。

关于Web服务的简要说明

这是一个非常简单的asmx Web服务,没有任何数据库连接。它将一些文件保存到C:\ ProgramData。这是此Web服务的唯一外部交互。

除了bin文件夹之外,该Web服务还包含一个service.asmx文件和web.config

当前,此Web服务托管在IIS自己的应用程序池中,并作为应用程序添加认网站。

我尝试过的方法

这是我尝试过的Docker文件

FROM microsoft/iis

RUN ["powershell.exe","Install-WindowsFeature NET-Framework-45-ASPNET"]  
RUN ["powershell.exe","Install-WindowsFeature Web-Asp-Net45"]

RUN mkdir c:\\my-web-service
copY my-web-service c:\\my-web-service

EXPOSE 80

RUN powershell New-WebApplication -Name my-web-service -Site 'Default Web Site' -PhysicalPath c:\\my-web-service -ApplicationPool 'DefaultAppPool'

使用此docker文件成功构建了映像,并使用以下命令从该映像创建了一个容器。

docker run -d --name my-ws-co -p 80 my-ws-image

我使用docker inspect找到了正在运行的容器的IP地址,当我浏览到chrome中的url时,我能够获得由IIS呈现的欢迎屏幕。

但是,当我尝试使用 container-ip-address \ my-web-service \ service.asmx 调用我的Web服务时,会导致404问题。

我尝试了不同的应用程序池,甚至尝试删除认网站并为此应用程序添加了新站点。似乎什么都没用。

我已使用带有Powershell的 docker exec 命令连接到正在运行的容器实例,还尝试使用IIS检查某些内容。 (使用appcmd)

我的观察如下。

  1. 当我仅使用DefaultAppPool时,可以看到工作进程正在运行(appcmd列表wp)。当我使用.NET 4.5之类的任何应用程序池时,我看不到任何工作进程正在运行。
  2. 当我停止并启动DefaultApppool时,认应用程序池的工作进程也会被杀死。辅助进程不会在启动应用程序池时启动。

我观察到的唯一区别是没有docker,它使用了自己的应用程序池,但是在docker中,我使用了认应用程序池。我这样做是因为我没有发现认应用程序池的设置与为该应用程序创建的池有什么区别。

有人可以帮我完成这项工作吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)