ASP.NET Core中launchSettings.json配置后无法自动启动浏览器求助
我正在使用.NET Core版本2.1.200,我的ASP.NET Core应用的launchSettings.json文件配置如下:
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iis": { "applicationUrl": "http://localhost/Contoso.Web.Manager", "sslPort": 0 }, "iisExpress": { "applicationUrl": "http://localhost:64802/", "sslPort": 44337 } }, "profiles": { "dev": { "commandName": "Project", "launchBrowser": true, "launchUrl": "http://localhost.manager.contoso.com:5000/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
执行dotnet run --launch-profile dev命令后,应用可在控制台正常运行,但无法自动打开新的浏览器窗口。请问我遗漏了什么配置?
我来帮你梳理下问题所在,主要是两个配置项的问题:
1. 缺少applicationUrl配置
你的dev配置段里没有指定applicationUrl,dotnet run需要明确知道应用要监听的网络地址。虽然控制台可能会显示默认的监听地址,但这个默认地址和你launchUrl里写的地址不匹配,导致浏览器无法定位到正确的打开地址。
2. launchUrl格式错误
你写的launchUrl是http://localhost.manager.contoso.com:5000/,这里的域名格式有问题(localhost.manager.contoso.com不是合法的本地域名格式),而且这个地址也没有和应用实际监听的地址对应上。
修改后的配置示例
你可以把launchSettings.json的dev段修改成这样:
"dev": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "http://localhost:5000", // 新增:指定应用监听的地址 "launchUrl": "manager", // 可以写相对路径,会自动拼接在applicationUrl后 "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }
补充说明
在.NET Core 2.1中,dotnet run会优先使用launchSettings.json里的applicationUrl来设置应用的监听地址。如果没有这个配置,应用会默认使用http://localhost:5000和https://localhost:5001,但此时你的launchUrl地址和默认地址不匹配,浏览器就不会自动打开。另外,launchUrl可以是完整的正确地址(比如http://localhost:5000/manager),也可以是相对路径,后者会更灵活。
内容的提问来源于stack exchange,提问作者Teoman shipahi

