Hébergement ASP.NET de Base en tant que service Windows

Comme je l'obtenir dans la RC2, il ya un soutien pour l'hébergement des applications dans les Services Windows. J'ai essayé de le tester sur un simple projet d'api web (à l'aide .NET Framework 4.6.1).

Voici mon Programme.cs code:

using System;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting.WindowsServices;

namespace WebApplication4
{
  public class Program : ServiceBase
  {
    public static void Main(string[] args)
    {
      if (args.Contains("--windows-service"))
      {
        Run(new Program());
        return;
      }

      var program = new Program();
      program.OnStart(null);
      Console.ReadLine();
      program.OnStop();
    }

    protected override void OnStart(string[] args)
    {
      var host = new WebHostBuilder()
      .UseKestrel()
      .UseContentRoot(Directory.GetCurrentDirectory())      
      .UseStartup<Startup>()
      .Build();

      host.RunAsService();
    }

    protected override void OnStop() {}
  }
}

Tous les autres trucs sont pour l'essentiel de l' .NET de Base du modèle (bien que j'ai changé de cadre à net461 et ajouté certaines dépendances du projet.json).

Après la publication avec dotnet publish et la création d'un Service Windows avec sc create je peux réussir à démarrer mon service, mais je ne peux pas atteindre tout de mon contrôleurs (ports ne sont pas listeting). Je suppose que je suis en train de faire quelque chose de mal.

Donc je suppose que la question principale est de savoir comment faire de l'auto hébergé web de l'api et de l'exécuter en tant que Service Windows. Tous ont trouvé des solutions ne fonctionnent pas après la RC2 de mise à jour.

  • Je ne comprends pas très bien ce qu'il se passe, mais votre code fonctionne très bien lorsque je l'exécute en tant que service Windows, tant que je ne passe pas --windows-service à elle.
  • En fait le ASP.NET l'équipe prévoit déjà que la classe. Il y a même un NuGet pour elle. Il suffit de l'essayer, mais ne semble pas être facile ainsi: github.com/aspnet/Home/issues/1386
  • Je vais avoir le même problème. Lorsque vous exécutez à partir de la ligne de commande (c'est à dire sans --windows-service), il fonctionne très bien. La création du service, fonctionne très bien (par exemple, "sc.exe ABC -binPath= "<chemin d'accès de fichier exe> --de la fenêtre de service") et de commencer le service de Services est très bien et montre que c'est de la Course, mais en essayant d'accéder au service via localhost:5000 ne fonctionne pas. Toutes les suggestions seraient appréciées.
  • Bonjour, comment, où vous en mesure d'ajouter une référence à System.ServiceProcess? Je ne peux pas ajouter la référence à mon netcoreapp1.0 projet ciblé
  • System.ServiceProcess n'est pas disponible dans netcoreapp1.0 (CoreCLR) pour le moment. Comme mentionné précédemment, vous aurez pour objectif plein cadre, par exemple, net461 puis de référence frameworkAssemblies.
  • Avez-vous été capable de faire ce travail @maria-p?

InformationsquelleAutor Maria P | 2016-05-20