c# - 如何解决 HTTP 错误 502.5 - 在asp.netcore 下使用Topshelf 创建windows 服务时进程失败?
问题描述
我使用 Visual Studio 2017 创建了一个 asp.netcore 项目。我从 Nuget 安装 TopShelf 并在下面的 Program.Main() 中添加代码:
public static void Main(string[] args)
{
var rc = HostFactory.Run(x =>
{
x.Service<MainService>(s =>
{
s.ConstructUsing(name => new MainService(args));
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("ASP.NETCoreTest");
x.SetDisplayName("ASP.NETCoreTest");
x.SetServiceName("ASP.NETCoreTest");
});
var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
Environment.ExitCode = exitCode;
}
在 MainService.cs 中:
public void Start()
{
Task.Factory.StartNew(() => this.StartExecuting(), TaskCreationOptions.LongRunning);
}
public void StartExecuting()
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
Stratup.cs 是默认的。
接下来,我运行 IIS Express,它可以工作,显示为(虽然有点奇怪)(https://localhost:44345/):
接下来,我在 PropertyGroup 中添加 RuntimeIdentifiers win7-x64 并在 CMD 中发布应用程序:
dotnet publish -c Release -r win7-x64
最后,我安装 ASP.NETCoreTest.exe 并启动 ASP.NETCoreTest.exe,但它显示为(https://localhost:44345/):
我应该怎么办?请帮助我,谢谢!
更新:如果我退出 IIS Express,它显示它无法连接到该站点。也许网站应该以其他方式打开(不是https://localhost:44345/)?
解决方案
推荐阅读
- timer - Jmeter 和吞吐量整形计时器 - 在一个脚本中多次
- angular - Angular 10:mat-sidenav 不可见
- sql - 将 SQL 查询转换为 Linq
- outlook - Microsoft Outlook 和附件重新配置
- python - 字符串匹配 Python
- javascript - 无法在 styled.div 组件中访问 React 组件的 props
- html - Visualfoce:日期格式显示为 2020 年 7 月 217 日
- javascript - 接听电话时 webRTC 丢失流
- mysql - MySQL:符合条件的 SELECT 行
- latex - LaTeX - 定义使用某种字体的单词列表