0

我通过 Visual Studio 2022 创建了一个 .net Core 6 API。它工作正常,一切正常,它启动并且 Swagger 显示我的 API 全面工作。我的其他本地应用程序可以按预期访问 API 端点。

有时,当我点击 时F5,该应用程序会在不同的端口成功且功能齐全地启动,主要是在机器重启后。这造成了我的其他应用程序无法找到它并且必须不断重新配置的问题,这既烦人又荒谬。

但是,我所做的任何事情似乎都不会对其产生任何影响。

我经历了很多很多事情,试图找到解决方案。

我的 VS 生成的Program.cs文件如下所示:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddXXX();
//...bunch of those
var app = builder.Build();
app.XXX()
//...bunch of those
app.Run();

此模式与我能找到的任何其他问题、答案甚至大多数教程都不匹配。我认为这可能是 .net Core 6 的新模式。

builder, builder.Services, 也不包含app任何UseUrl()看起来与 URL 相关的方法或任何东西。

该术语IHostBuilder没有出现在应用程序的任何地方,因此任何涉及该术语的解决方案都让我迷失了方向。

根本没有出现“主机”一词Program.cs

appsettings.json没有“网址”属性。添加它不会做任何事情。在这种情况下,任何应该使用它的东西都不能存在。

端口号(在我的例子中是 49153)没有出现在项目的任何地方。

launchsettings.json指定了 applicationUrl。这是一个我从未见过的端口号。改变它没有效果。将“ASPNETCORE_URLS”添加到“environmentVariables”没有任何效果。更改此文件中的 Docker“launchUrl”确实会更改默认情况下在浏览器中打开的 URL,但随后找不到该 URL。

我对 Docker 的了解不多,我不确定这是否会影响服务器端口,但Dockerfile似乎没有设置或引用任何端口号。

4

1 回答 1

0

据我所知,在 VS 中创建 web api 应用程序后,它会生成 lanchsettings.json 文件。在此文件中,它包含 IIS express 设置和应用程序的配置文件设置。我建议你可以重新检查一下 lunchsettings.json 以确保你设置了正确的 url 和端口,然后再试一次。

生成的 json 如下所示,您会发现它包含两个 applicationUrl,一个用于 IIS express,另一个用于应用程序名称CoreSixWebAPI

{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:37519",
      "sslPort": 44356
    }
  },
  "profiles": {
    "CoreSixWebAPI": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:7169;http://localhost:5169",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

如果您选择使用 IIS express 来运行您的 web api,如下图所示,您会发现它将使用 IIS express 设置的应用程序 url,如下所示,与应用程序名称相同。

在此处输入图像描述

在此处输入图像描述

于 2022-01-17T05:42:54.133 回答