调试启用了docker的webAPI项目时,如何更改VS2022默认服务器的监听IP?

shibayan 1 信誉分
2025-02-02T15:31:38.4366667+00:00

我创建了一个Web API项目,创建时勾选了“启用容器支持”,启动配置是默认的“Container (Dockerfile)”,启动项目后会弹出浏览器成功显示Swagger页面,此时地址栏是默认的localhost地址(“https://localhost:32771/swagger/index.html”),我现在想让同一局域网中的其他设备也能访问Swagger页面,所以想增加一个监听地址(用ipconfig查到本机IP是192.168.0.105),但是不知道该怎么增加?

我试过一个不启用docker的普通WebAPI项目,我可以在launchSettings.json文件中修改applicationUrl的值来增加监听地址和端口(也为该端口增加了入站规则),这样做能够成功通过其他设备访问到Swagger页面,但是就是不知道启用了容器的WebAPI项目如何修改监听地址?因为在launchSettings.json中它没有applicationUrl这个字段。

ASP.NET Core
ASP.NET Core
.NET Framework 中一套用于生成 Web 应用程序和 XML Web 服务的技术。
33 个问题
Visual Studio 调试
Visual Studio 调试
Visual Studio: 一系列 Microsoft 集成开发工具套件,用于生成适用于 Windows、Web 和移动设备的应用程序。调试: 检测、查找和更正程序中的逻辑或语法错误或硬件故障的行为或过程。 在硬件上下文中,术语“故障排除”是更频繁使用的术语,尤其是在问题严重的情况下。
21 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. JasonPan - MSFT 6,301 信誉分 Microsoft 供应商
    2025-02-03T05:12:10.68+00:00

    Hi @shibayan,

    请在launchSettings.json文件配置中找到docker相关的配置,添加 sslPorthttpPort 可以实现启动docker运行的时候使用固定的端口。如下的配置,运行时候的启动的url是 https://localhost:18081/swagger/index.html.

    对了,因为在vs2022本机中调试时候,我们使用的是自签名证书,所以在本地(192.168.0.105)访问https应该是没有问题的,但是局域网内的其他机器可能无法访问,因为自签名证书的影响。所以在局域网内的其他的机器访问时候推荐使用http访问 http://localhost:18080/swagger/index.html.

        "Container (Dockerfile)": {
          "commandName": "Docker",
          "launchBrowser": true,
          "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
          "environmentVariables": {
            "ASPNETCORE_HTTPS_PORTS": "8081",
            "ASPNETCORE_HTTP_PORTS": "8080"
          },
          "publishAllPorts": true,
          "useSSL": true,
          // for https
          "sslPort": 18081,
          // for http
          "httpPort": 18080
        }
      },
    

    通过vs2022运行项目时候,launchSettings.json 是关键因素,所有相关的配置都应该在这里进行寻找。

    如果关于此问题,您还有其他的疑问,欢迎在下方进行评论留言,我将会在工作时间及时查看并回复。


    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他问题,请点击“评论”。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们的 文档 中的步骤启用电子邮件通知。

    Best Regards

    Jason


0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。