asp.net mvc 프로젝트를 만들었습니다. 이 프로젝트에서 나는 어떤 코드가 항상 실행되기를 원한다. 웹 호스팅 서비스에 코드를 게시합니다. 처음으로 내 도메인에 http 요청을 보내서 응용 프로그램을 시작하고 응용 프로그램이 항상 활성 상태로 유지되고 종료되지 않을 것으로 기대합니다. 그러나 이것은 일어나지 않습니다.지속적으로 실행 asp.net mvc 웹 응용 프로그램을 유지하는 방법
심지어 내 코드에서 내 도메인을 핑 (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
아니요, 액세스 권한이 없습니다. 호스팅 서비스에 내 애플리케이션을 게시하는 것에 대해 언급합니다. –