我有一个Visual Studio 2017 [ / 2019 ] asp.net核心Web应用项目,使用FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
和FROM microsoft/dotnet:2.1-sdk AS build
图像启用了Docker支持。
当我的f5调试示例在http://localhost:44301/上启动时,我尝试对相对url /data/some.json
发出HttpClient.SendAsync()请求,以拉入数据,使localhost调试能够模拟仅在已发布应用案例中存在的安全状态。
当我使用项目的IISExpress目标进行调试时,一切正常。当我针对Docker目标HttpClient进行调试时。SendAsync如果我更改代码以从远程url加载some.json(例如存储帐户公共blob路径),则会生成异常,并显示消息Cannot assign requested address
。f5调试Docker目标不会在此调用中失败。
可以使用https://github.com/myusrn/adncauthexploration.git
提供的AzWebApp1
项目重现问题,该项目还需要使用项目引用访问的https://github.com/myusrn/KK.AspNetCore.EasyAuthAuthentication.git
,以启用此nuget包的调试内容。使用localhost f5 iisexpress目标不会重现问题。切换到localhost f5 docker目标,当调试url处理命中KK.AspNetCore.EasyAuthAuthentication\Services\EasyAuthWithAuthMeService.cs
时,会重现问题|第109行var response = await client.SendAsync(httpRequest);
。
我想知道是否有一些Dockerfile设置,我需要作出,以使这个f5调试localhost相对url请求的asp.net核心web应用程序启动代码。
2条答案
按热度按时间n8ghc7c11#
我使用的是相同的ASP.NET Core Docker版本,如果您这样做,它似乎可以正常工作:
替换
http://localhost:<port>
与
http://host.docker.internal:<port>
再试一次,检查它是否适合你!
raogr8fs2#
要从
IIS Express
、SelfHost
和Docker
访问资源,您可以使用Http请求配置HttpClient.BaseAddress
,如下所示: