myu*_*srn 7 c# dotnet-httpclient docker dockerfile asp.net-core-webapi
我有一个 Visual Studio 2017 [ / 2019 ] asp.net 核心 Web 应用程序项目,启用了 docker 支持使用FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base和FROM microsoft/dotnet:2.1-sdk AS build图像。
当我的 f5 调试实例在http://localhost:44301/上启动时,我尝试针对相对 url 发出 HttpClient.SendAsync() 请求/data/some.json以拉入数据,使 localhost 调试能够模拟仅存在于已发布应用程序案例中的安全状态。
当我使用项目的 IISExpress 目标 f5 调试时,这一切正常。当我靠在多克尔F5调试目标针对本地主机相对URL,或完全合格的HttpClient.SendAsync()调用https://localhost:44301/data/some.json和http://localhost:8081/data/some.json路径,生成与消息的例外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 处理命中时,切换到 localhost f5 docker 目标问题重现KK.AspNetCore.EasyAuthAuthentication\Services\EasyAuthWithAuthMeService.cs| 第 109 行var response = await client.SendAsync(httpRequest);。
我想知道是否需要进行一些 Dockerfile 设置以通过 asp.net 核心 Web 应用程序启动代码启用此 f5 调试本地主机相对 url 请求。
小智 8
我正在使用相同的 ASP.NET Core docker 版本,它似乎按如下所述工作:
http://host.docker.internal:<port>
再试一次,看看它是否适合你!
Tao*_*hou -1
要从IIS Express、SelfHost和访问资源Docker,您可以HttpClient.BaseAddress使用 Http Request 进行配置,如下所示:
public class HomeController : Controller
{
private readonly HttpClient httpClient;
public HomeController(
, IHttpClientFactory httpClientFactory)
{
this.httpClient = httpClientFactory.CreateClient();
}
public async Task<IActionResult> Index()
{
this.httpClient.BaseAddress = new Uri($"{this.Request.Scheme}://{this.Request.Host}");
var response = await httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get,
"data/some.json"));
var result = await response.Content.ReadAsStringAsync();
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9509 次 |
| 最近记录: |