ASP.NET核心 – 在Visual Studio 2015中通过Docker进行debugging时的问题
我在Visual Studio中使用Docker运行构build在ASP.NET Core上的应用程序时遇到了问题。 我的应用程序只使用dnxcore50框架。 我的project.json文件是:
{ "version": "1.0.0-*", "compilationOptions": { "emitEntryPoint": true }, "dependencies": { "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final" }, "frameworks": { "dnxcore50": { } }, "exclude": [ "wwwroot", "node_modules" ], "publishExclude": [ "**.user", "**.vspscc" ], "commands": { "web": "Microsoft.AspNet.Server.Kestrel" } }
我尝试了以下方法:
- 当我的dnvm指向运行时, dnx-coreclr-win-x64.1.0.0-rc1-update1如下图所示。
我的应用程序成功build立。 但是,我在docker上运行/debugging应用程序时出现以下错误,我的应用程序被卡在“Opening site http://192.168.99.100:5000 ”
错误详细信息:当前运行时框架与“app”不兼容当前运行时目标框架:“DNX,Version = v4.5.1(dnx451)”请确保运行时匹配project.json中指定的框架
- 由于上面的错误信息表明在框架中存在不匹配,我通过修改默认别名并执行命令
dnvm use default -p
将默认和活动运行时更改为dnx-coreclr-linux-x64.1.0.0-rc1-update1 。 然后,我重新启动我的VS(以确保更改在VS中可见)。
但是,我的应用程序仍然build立在DNX版本v4.5.1上,如下面的构build日志所build议的那样:
1> Information: [LoaderContainer]: Load name=Microsoft.Dnx.Tooling 1> Information: [PathBasedAssemblyLoader]: Loaded name=Microsoft.Dnx.Tooling in 2ms 1> Information: [Bootstrapper] Runtime Framework: DNX,Version=v4.5.1 1> Microsoft .NET Development Utility Mono-x64-1.0.0-rc1-16231
因此,应用程序再次无法运行与点1相同的错误。
此外,在更改默认运行时dnu还原从命令行停止工作,并给出以下错误:
“dnu”不被识别为内部或外部命令,可操作程序或batch file。
有趣的是,'dnu'restore命令继续从VS(如VS构build日志中的build议)工作。
- 然后我尝试将dnvm运行时更改为dnx-mono.1.0.0-rc1-update1 。 但是它会失败,并显示以下错误
找不到dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1,你需要运行'dnvm install default'吗? 在C:\ Program Files \ Microsoft DNX \ Dnvm \ dnvm.ps1:1659 char:9 + throw“Can not find $ runtimeFullName,do you need to run'$ Com … + ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~运行timeException + FullyQualifiedErrorId:找不到dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1,你需要运行'dnvm install default'吗?
我需要用什么运行时从VS中运行docker,以及如何更改它? 请求您的帮助来解决问题。
更新我终于能够通过将docker文件的第一行更改为FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr
来解决该问题FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr
FROM microsoft/aspnet:1.0.0-rc1-update1
。 感谢@bertt的提示。
dockerfile的第一行是什么? 对于CoreClr应该是“FROM microsoft / aspnet:1.0.0-rc1-update1-coreclr”
我在这里阅读关于这个在stackoverflow这个类似的post
问题可能是Kestrel默认只监听本地主机。
您可能想要更改您的dockerfile包含:
ENTRYPOINT ["dnx", "web", "--server.urls", "http://0.0.0.0:5000"]
或者只是修改你的project.json的最后一部分
"commands": { "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://0.0.0.0:5000" }
也可能工作。
- 什么docker存储驱动程序有利于“生产”使用?
- 从Docker中的另一个微服务调用微服务
- 为什么有时候Java进程生成器只能得到1行的输出?
- 用webpackDevServer Docker化Django
- 未能解决'kafka:9092':名称或服务未知 – docker / php-rdkafka
- postgres-docker-container中无法连接php到db
- Apacheredirect到docker容器的不同端口(Redmine)
- Windows卷上的Visual Studio 2017 Docker项目问题
- 在Windows容器上使用复杂的PowerShell脚本构buildDockerfile