我对这个问题已经摸不着头脑有一段时间了。我正在构建一个 ASP.NET MVC 5 应用程序(是的,我知道它是遗留的,但在我们现代化时需要一个短期解决方案)。这只是一个包装 API 的 Web 界面,因此逻辑在很大程度上是抽象的。用户界面不是问题,但我认为上下文可能会有所帮助。真正的问题在于 API。
我不太熟悉.NET 8.0 API开发的细节,所以请原谅我的无知。运行我的 API 可执行文件时,我的控制台中显示以下内容:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://[::]:5678
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\
首先,
http://[::]:5678
部分让我感到困惑。该代码本周早些时候运行,显示 http://localhost:5678
。这是 Kestrel/CORS 问题吗? [::] 是 localhost 的简写吗?它看起来确实像 IPv6 表示法,但我没有对我的系统进行任何表明 IPv6 首选项发生更改的操作。我尝试过重新启动 VS 2022、重新启动我的机器、重建/清理建筑等。所以我有点难住了。
我当前的 API
appsettings.json
非常接近现成的 appsettings.json
文件;也就是说它看起来像下面这样:
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ApiUrl": "http://localhost:5678/"
}
API
Program.cs
文件如下所示:
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
如果需要,我可以提供更多详细信息,但我不太确定除此之外还需要哪些信息,所以请随时向我提供线索!我还在网络/堆栈交换搜索中四处寻找
[::]
字符串,但无济于事。
** 更新 ** 根据 Ibram Reda 的请求,launchSettings.json 文件位于此处:
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:65486",
"sslPort": 0
}
},
"profiles": {
"FeatureFlagsAPI": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5678",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
令人不太满意的是,这个问题似乎已经自行解决了。我能够使用 localhost 并且 IP 按预期显示。我只能想象 IT 管理人员添加/更改了应用程序或设置,但我不能 100% 确定。我所有其他研究都证实了 BenderBoy 在帖子评论中所说的话。