私はasp.net mvcプロジェクトを作成しました。このプロジェクトでは、私はいくつかのコードを常に実行したい。 Webホスティングサービスでコードを公開します。初めて私のドメインにhttpリクエストを送信することでアプリケーションを開始し、アプリケーションが常に生きていて、決してシャットダウンすることはないと思います。しかし、これは起こりません。継続的に実行するasp.net mvc Webアプリケーションを維持する方法
私のコードで私のドメインにpingをすると、アプリケーションがシャットダウンするのを防ぐことができます。しかし、この溶液を約24時間(常にではない!!!)へのアプリケーションのライフサイクルを延ばすに
ここでは、私のコードは次のとおりです。
public class Main
{
public static void main()
{
while (true)
{
try
{
// some codes
}catch(Exception exp)
{
// log the exception message, (but any exception hasn't occurred till now
}
}
}
}
Global.asaxの:(まもなく、アプリケーションのシャットダウンをこのコードを使用することにより、中私はダミーのコントローラを使用してこの方法)
public class MvcApplication : System.Web.HttpApplication
{
static Thread keepAliveThread = new Thread(KeepAlive);
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
keepAliveThread.Start();
Main.main();
}
protected void Application_End()
{
keepAliveThread.Abort();
}
static void KeepAlive()
{
while (true)
{
WebRequest req = WebRequest.Create("http://mydomain/Home/Index");
req.GetResponse();
try
{
Thread.Sleep(60000);
}
catch (ThreadAbortException)
{
break;
}
}
}
}
Global.asaxの:(このコードを使用することにより、アプリケーションは約24時間を実行している滞在、このように私は、任意のコントローラを使用していない)
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
Main.main();
Timer timer = new Timer(new TimerCallback(refreshSession));
timer.Change(0, 5 * 60 * 1000); // 5 min
}
static void refreshSession(object state)
{
Unirest.get("http://mydomain/");
}
}
。
私の目的に適したソリューションはありますか?はいの場合は、私にサンプルコードを与えてください。
iis設定にアクセスできる場合は、アプリケーションプールの開始モードを常に実行中に変更できます。 – Tavitos
いいえ、私はそれにアクセスしていません、私はホスティングサービスで私のアプリケーションを公開することを言及します –