.net核心3.1 Web API托管为Windows服务未显示页面

时间:2020-07-13 15:51:56

标签: c# .net-core windows-services

我正在尝试将Windows服务3.1托管为Windows服务。但是,我一直将网页显示为“无法访问此网站”

如果我运行在IIS中部署的应用程序,则一切正常。

.net Core也具有angular 8客户端应用程序。

Program.CS

public static void Main(string[] args)
{
    CreateHostBuilder(args).Build().Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        }).ConfigureWebHost(config =>
        {
            config.UseUrls("http://*:9095/");
        }).UseWindowsService();

Startup.CS

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    // In production, the Angular files will be served from this directory
    services.AddSpaStaticFiles(configuration =>
    {
        configuration.RootPath = "ClientApp/dist";
    });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
    }

    app.UseStaticFiles();
    if (!env.IsDevelopment())
    {
        app.UseSpaStaticFiles();
    }

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller}/{action=Index}/{id?}");
    });

    app.UseSpa(spa =>
    {
        
        spa.Options.SourcePath = "ClientApp";

        if (env.IsDevelopment())
        {
            spa.UseAngularCliServer(npmScript: "start");
        }
    });
}

我能够发布项目并创建Windows服务并启动它。

enter image description here

用于创建服务的命令:

** sc创建MyWinService binPath =“ D:\ MyWinService \ bin \ Release \ netcoreapp3.1 \ win-x64 \ MyWinService .exe”

[SC] CreateService成功**

然后从msc.service启动服务

在访问URL之后: http:// localhost:9095 / 没有任何结果

enter image description here

2 个答案:

答案 0 :(得分:0)

您正在安装错误的EXE文件

sc create MyWinService binPath="D:\MyWinService\bin\Release\netcoreapp3.1\win-x64\MyWinService.exe

应该是

sc create MyWinService binPath="D:\MyWinService\bin\Release\netcoreapp3.1\publish\MyWinService.exe

D:\ MyWinService \ bin \ Release \ netcoreapp3.1 \ win-x64不包含ClientApp文件夹

答案 1 :(得分:0)

在防火墙中添加一条规则,以允许使用给定的端口访问此服务。