背景:通过一些游戏,我设法将.NET Core 2.1 + Identity设置为UI + Windows服务(关注this文章),如下所示:
dotnet add package Microsoft.AspNetCore.Hosting.WindowsServices --version 2.1.0-rc1-final
新项目 - > ' .NET Core' - > ' ASP.NET核心Web应用程序' - >确定
选择ASP.NET Core 2.1(在顶部) - >网络应用程序
取消选择“配置HTTPS”
'更改身份验证' - > '个人用户帐户' - >确定
在Program.cs中:
添加using Microsoft.AspNetCore.Hosting.WindowsServices;
替换
CreateWebHostBuilder(args).Build().Run();
用:
if (Debugger.IsAttached || args.Contains("--debug"))
{
CreateWebHostBuilder(args).Build().Run();
}
else
{
CreateWebHostBuilder(args).Build().RunAsService();
}
:
评论app.UseHttpsRedirection();
在launchSettings.json中:
替换:
"MyProj": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
使用:
"MyProj": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:44322;http://localhost:44322",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
}
(我认为这就是全部)
然后我重建解决方案并在项目目录中执行:
dotnet publish -c Release --self-contained -r win-x64
我得到MyProj\bin\Release\netcoreapp2.1\win-x64\MyProj.exe
我作为服务安装并运行它
在Chrome中我然后:
http://localhost:5000/
- 作品:)
http://localhost:44322/
- 不起作用:(
这是来自launchSettings.json的端口设置未应用
如何在http 44322上收听服务?
谢谢!
答案 0 :(得分:2)
launchSettings.json
仅用于dotnet run
或Visual Studio解释的开发设置。
在制作中,您可以设置ASPNETCORE_URLS
环境变量或使用MyProj.exe --urls "http://localhost:5020;https://localhost:5021"
启动。
或者,您也可以在Web主机构建器上调用.UseUrls("…")
:
WebHost.CreateDefaultBuilder(args)
.UseUrls("…")
.UseStartup<Startup>()