【发布时间】:2018-12-28 05:55:07
【问题描述】:
我有一个使用 FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base 和 FROM microsoft/dotnet:2.1-sdk AS build 图像启用了 docker 支持的 Visual Studio 2017 [ / 2019 ] asp.net 核心 Web 应用程序项目。
当我的 f5 调试实例在 http://localhost:44301/ 上启动时,我尝试针对相对 URL /data/some.json 发出 HttpClient.SendAsync() 请求以提取数据,从而使本地主机调试能够模拟仅存在于已发布应用案例中的安全状态。
当我使用项目的 IISExpress 目标进行 f5 调试时,一切正常。当我针对 Docker 目标进行 f5 调试时,针对 localhost 相对 url 或完全限定的 https://localhost:44301/data/some.json 和 http://localhost:8081/data/some.json 路径的 HttpClient.SendAsync() 调用会生成带有消息 Cannot assign requested address 的异常。如果我更改代码以从远程 url 加载 some.json,例如存储帐户公共 blob 路径,f5 调试 Docker 目标在此调用中不会失败。
可以使用https://github.com/myusrn/adncauthexploration.git 提供的AzWebApp1 项目重现问题,该项目还需要使用项目引用访问的https://github.com/myusrn/KK.AspNetCore.EasyAuthAuthentication.git,以启用此nuget 包的调试内容。使用 localhost f5 iisexpress 目标问题不会重现。当调试 url 处理命中 KK.AspNetCore.EasyAuthAuthentication\Services\EasyAuthWithAuthMeService.cs | 时切换到 localhost f5 docker 目标问题重现第 109 行var response = await client.SendAsync(httpRequest);。
我想知道是否需要进行一些 Dockerfile 设置才能通过 asp.net 核心 Web 应用程序启动代码启用此 f5 调试 localhost 相对 url 请求。
【问题讨论】:
-
不太清楚你的网络应用为什么会调用自己。
-
@John,它是为了支持来自相对路径或远程 url 路径的 data/some.json
标签: c# docker dockerfile asp.net-core-webapi dotnet-httpclient