2017-04-13 3 views
4

Je cherche à mettre certaines applications .NET Core en production et avec l'ancien .NET framework, vous pouvez mettre à jour les DLL compilées pour le code de l'application à tout moment. La prochaine fois que le pool d'applications sera recyclé, vous obtiendrez votre nouveau code, ou vous pourrez recycler manuellement le pool d'applications. Avec .NET Core, il semble que l'application en cours verrouille la DLL et qu'elle ne peut pas être écrasée tant que le processus n'est pas fermé ou inactif via le Gestionnaire des tâches (serveur de Windows ici).Existe-t-il un moyen de publier à chaud une application .NET Core?

Est-ce la méthode préférée pour publier une nouvelle version sans avoir à définir une fenêtre de maintenance pour tous les utilisateurs? C'est sur un serveur Windows 2012 R2 exécutant le framework .NET Core via IIS 8 et le pool d'applications ne disposant pas de code managé.

+1

FYI: ASP.NET Core + IIS est géré ce module: https://github.com/aspnet/AspNetCoreModule. Ce pourrait être une fonctionnalité intéressante qu'ils pourraient ajouter. – natemcmaster

Répondre

3

Pour ASP.NET Core hébergé avec Kestrel s'exécute dans un processus séparé et IIS fonctionne comme Reverse Proxy. Donc, il n'y a pas moyen pour la publication de DLL, sauf si vous l'implémentez votre application.

Set up a hosting environment for ASP.NET Core on Windows with IIS, and deploy to it section Déploiement de l'application, point 4.

Si vous voulez éviter les temps d'arrêt tout simplement configurer deux sites Web sur IIS avec la même série de paramètres, faire une mise à jour sur le deuxième site, mettez d'abord vers le bas, et commencer seconde.

+0

J'ai essayé ceci et j'ai deux répertoires côte à côte, puis en changeant le chemin vers le nouveau. Les deux méthodes arrêtent tous les threads actuels et démarrent un nouveau processus, en envoyant 500 erreurs pour toutes les requêtes en cours, donc pas une solution idéale. Le mieux que j'ai trouvé est pendant des périodes calmes, commencez la copie, attendez jusqu'à ce qu'il se verrouille et puis réutilisez le pool d'application et continuez la copie - si je suis habile de la souris et du doigt il copiera habituellement dans le temps. – RemarkLima