首页 > 解决方案 > 如何解决 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/)?

标签: c#asp.net-coretopshelf

解决方案


推荐阅读