在Windows 7中运行Docker上的ASP.NET Core WebApp时出错(debugging)

我试图在Windows 7中运行docker上的asp.net核心应用程序。我已经安装了Visual Studio 2015 Enterprise(Update 3)和Visual Studio Tools for Docker。 另外,我可以在Releaseconfiguration中运行应用程序。

我没有做任何修改Dockerfile和撰写文件,这些是默认的,当我创build项目,并添加了Docker支持时创build的。

当我使用Debugconfiguration运行应用程序时,出现以下错误,并且没有运行任何Docker容器来运行和debugging应用程序:

Error MSB4018 The "PrepareForLaunch" task failed unexpectedly. System.InvalidOperationException: Unable to validate volume mapping. For troubleshooting, follow instructions from http://aka.ms/DockerToolsTroubleshooting at Microsoft.DotNet.Docker.BuildTasks.PrepareForLaunch.<ExecuteAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.DotNet.Docker.BuildTasks.DockerBaseTask.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() SampleCoreApp C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing\ImportAfter\Microsoft.DotNet.Docker.targets 70 

任何帮助或领导解决这个问题将是有益的。

这个问题是因为驱动器映射这里的一些问题。 所以,我已经删除了一个驱动器映射( – 。:/ app),并在docker-compose.dev.debug.yml文件中更改了源参数(obj / Docker / empty),它对我很有帮助。

上一个文件(docker-compose.dev.debug.yml):

 version: '2' services: samplecoreapp: build: args: source: obj/Docker/empty labels: - "com.microsoft.visualstudio.targetoperatingsystem=linux" environment: - ASPNETCORE_ENVIRONMENT=Development - DOTNET_USE_POLLING_FILE_WATCHER=1 volumes: - .:/app - ~/.nuget/packages:/root/.nuget/packages:ro - ~/clrdbg:/clrdbg:ro entrypoint: tail -f /dev/null 

修改后:

 version: '2' services: samplecoreapp: build: args: source: . labels: - "com.microsoft.visualstudio.targetoperatingsystem=linux" environment: - ASPNETCORE_ENVIRONMENT=Development - DOTNET_USE_POLLING_FILE_WATCHER=1 volumes: - ~/.nuget/packages:/root/.nuget/packages:ro - ~/clrdbg:/clrdbg:ro entrypoint: tail -f /dev/null 

希望这对面临这个问题的人有所帮助。

这可能是由于Docker中的驱动器共享/卷挂载问题,我遇到了这个确切的问题,并从Docker设置中修复。 这恰好出现在连接到企业域的机器上,默认情况下,docker的权限有限。 适当的解决方法是从Docker设置更新您的“共享驱动器”。

更新共享驱动器

更多细节可以在这里findhttps://blogs.msdn.microsoft.com/stevelasker/2016/06/14/configuring-docker-for-windows-volumes/