2016-03-21 12 views
8

प्रोग्रामिंग के रूप में एएसपीनेट कोर में ऐप को पुनरारंभ कैसे कर सकता हूं?एएसपीनेट कोर ऐप प्रोग्रामेटिक रूप से पुनरारंभ कैसे करें?

मैं कैश साफ़ करना चाहता हूं और एप्लिकेशन को स्टार्टअप को फिर से दर्ज करना चाहता हूं।

+0

बस बेहतर समझने के लिए, तो आप इस आवश्यकता क्यों है? –

+0

मुझे लगता है कि मेरे लिए सबसे आम परिदृश्य कुछ प्रशासनिक दृश्य के माध्यम से ऐप के लिए सेटिंग में हेरफेर कर रहा है। स्टार्टअप पर सेटिंग्स अक्सर शुरू की जाती हैं। –

+1

एक और उपयोग मैं सोच सकता हूं कि एक नया संस्करण प्रकाशित करना है और –

उत्तर

3

यदि आपको केवल विकास परिदृश्य के लिए इसकी आवश्यकता है तो आप dotnet-watch (डॉटनेट के लिए) या dnx-watch (डीएनएक्स के लिए) का उपयोग कर सकते हैं।

यदि आप अपने आवेदन को उत्पादन में पुनरारंभ करना चाहते हैं, तो आपको वॉचर के समान कुछ लागू करना होगा। प्रक्रिया को मारने और पुनरारंभ करने के लिए आपको बाहरी प्रक्रिया की आवश्यकता है। या आपको अपने आप को एक उदाहरण लॉन्च करने और फिर खुद को मारने के लिए अपने ऐप की आवश्यकता है। दुर्भाग्यवश, इसके लिए बॉक्स से कुछ भी नहीं है।

+4

पुनरारंभ करना है यह एक हैक होगा, लेकिन क्या ऐप प्रोग्रामेटिक रूप से एक कॉन्फ़िगरेशन फ़ाइल बदल सकता है जो एक ऐप को पुनरारंभ करेगा? –

13

अद्यतन: Mirask's answer आप host.Run() करने के लिए कॉल देखेंगे नेट कोर 2.

Program.cs में के लिए और अधिक सही है। इस विधि में एक अधिभार है जो System.Threading.CancellationToken स्वीकार करता है। यह मैं क्या कर रहा हूँ है:

public class Program { 

    private static CancellationTokenSource cancelTokenSource = new System.Threading.CancellationTokenSource(); 

    public static void Main(string[] args) { 

     var host = new WebHostBuilder() 
       .UseKestrel() 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseIISIntegration() 
       .UseStartup<Startup>() 
       .Build(); 

     host.Run(cancelTokenSource.Token); 
    } 

    public static void Shutdown() { 
     cancelTokenSource.Cancel(); 
    } 
} 

फिर, मेरी नियंत्रक में मैं Program.Shutdown() फोन और कुछ सेकंड आवेदन की मौत के बाद कर सकते हैं। यदि यह आईआईएस के पीछे है, तो दूसरा अनुरोध स्वचालित रूप से एप्लिकेशन शुरू कर देगा।

+0

यह बिल्कुल सही है, धन्यवाद। आईआईएस द्वारा होस्ट किए जाने पर इसे संभालने के संबंध में, यह माइक्रोसॉफ्ट.Web.Administration का संदर्भ जोड़ने या आईआईएस रीसायकल की चाल करने के लिए web.config फ़ाइल के साथ टंकण करने से बेहतर है। –

+3

छोटे अपडेट। मैंने पाया कि .NET कोर 2.0 में विधि रन (टोकन) अब मेरे लिए उपलब्ध नहीं है। मैंने इस चारों ओर काम करने के लिए निम्न पंक्ति का उपयोग किया: .RunAsync (रद्दीकरण टोकनसोर्स। टोकन) .GetAwaiter()। GetResult(); – Schwarzie2478

+0

धन्यवाद, मैं सोच रहा था कि अद्यतन के बाद से ऐसा कैसे करें। आपको यह जवाब देना चाहिए। – Chet

3

नेट कोर 2

एक समय आ सकता है जब आप प्रोग्राम पुनरावृत्ति करने के लिए अपने ASP.Net कोर 2 साइट मजबूर करने के लिए कामना करता हूं। यहां तक ​​कि एमवीसी/वेबफॉर्म दिनों में भी यह एक अनुशंसित अभ्यास नहीं था, लेकिन हां, एक तरीका है। एएसपी.Net कोर 2 IAplicationLifetime ऑब्जेक्ट के इंजेक्शन के लिए अनुमति देता है जो आपको कुछ आसान चीजें करने देगा। सबसे पहले, यह आपको स्टार्टअप, शट डाउन और शटडाउन के लिए घटनाओं को पंजीकृत करेगा जो कि ग्लोबल.एक्सएक्स के माध्यम से दिन में उपलब्ध हो सकता है। लेकिन, यह आपको साइट को बंद करने की अनुमति देने के लिए एक विधि का खुलासा करता है (हैक के बिना!)। आपको इसे अपनी साइट में इंजेक्ट करने की आवश्यकता होगी, फिर बस इसे कॉल करें। नीचे एक मार्ग के साथ एक नियंत्रक का एक उदाहरण है जो एक साइट को बंद कर देगा।

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Microsoft.AspNetCore.Hosting; 
using Microsoft.AspNetCore.Mvc; 

namespace MySite.Controllers 
{ 
    public class WebServicesController : Controller 
    { 
     private IApplicationLifetime ApplicationLifetime { get; set; } 

     public WebServicesController(IApplicationLifetime appLifetime) 
     { 
      ApplicationLifetime = appLifetime; 
     } 

     public async Task ShutdownSite() 
     { 
      ApplicationLifetime.StopApplication(); 
      return "Done"; 
     } 

    } 
} 

स्रोत: http://www.blakepell.com/asp-net-core-ability-to-restart-your-site-programatically-updated-for-2-0

संबंधित मुद्दे