无法加载应用程序或执行命令Microsoft.AspNet.Server.Kestrel'。可用命令:web

时间:2015-12-11 15:54:57

标签: linux ubuntu docker dnx kestrel-http-server

尝试在docker上运行简单的webapi应用程序(部署到Ubuntu Linux)我在尝试运行容器时遇到奇怪的异常:
无法加载应用程序或执行命令Microsoft.AspNet.Server.Kestrel'。可用命令:web。

到目前为止我做了什么..我已经将我的aspnet5解决方案上传到Linux机器并运行发布它:dnu publish --framework dnxcore50 --configuration Release --wwwroot" wwwroot" --wwwroot-out" wwwroot" --iis-command" web"

接下来我做了docker build来创建一个图像,然后尝试运行它:sudo docker run -t -d -p 8000:8000 myimagename

查看docker日志,我看到上面显示的异常。

我已登录容器查看文件夹结构,看起来都很好。容器中的Verifyid dnx和我用来构建解决方案的那个是相同的。

使用最新的microsoft / aspnet图像 - rc1-update1

任何想法??

1 个答案:

答案 0 :(得分:1)

我能够通过在ENTRYPOINT之前在Dockerfile中运行这些命令来使它工作:

ADD ./app
#SOLUTION
WORKDIR path_to_your_sources
RUN dnu restore
#########
WORKDIR /app/approot
ENTRYPOINT "./web"

虽然错误消息表明它正在期待“Microsoft.AspNet.Server.Kestrel”中的命令

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  }

这很奇怪,但无论如何要检查是否是这种情况,我试过了:

    "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "Microsoft.AspNet.Server.Kestrel": "Microsoft.AspNet.Server.Kestrel"
  }

它不起作用。 dnu restore修复了它,还不知道与错误消息的关系。