Azure VM IIS Restarting - c#

We have a simple .net application running crystal reports in an Azure VM. We have some code that detects if the application has restarted, and this application is restarting often.
protected void Application_Start()
{
if (!HttpContext.Current.IsDebuggingEnabled)
SendgridService.SendAppRestartEmail();
}
I suspect the application is going to sleep or something is triggering the restart, but cant work out what.
After doing a lot of searching I am posting here to see if anyone can help

Most likely the problem is that your AppPool is getting recycled because of the low usage.
You'll need to adjust timeout settings. See the following articles:
Recycling Settings for an Application Pool
IIS: Idle Timeout vs Recycle
How To Configure Idle Time-out Settings For An Application Pool (IIS 7)

Related

Can kestrel server in ASP.NET core be configured with idle timeout at startup

I'm using a HostedService inside an ASP.NET core web api that will be deployed in an IIS instance on premise (.NET Core 2.2). I need to ensure that the idle timeout is set to zero to ensure the background service will run continuously and I believe this can be done by setting the idle timeout on the application pool to zero. This would, however, require the IIS administrator to perform this action upon setup so I was wondering if there is a way to configure kestrel with a zero idle timeout when its first configured in the CreateWebHostBuilder() method of the program class.
Is this possible?
When you use IIS as a reverse proxy for an ASP.NET Core application, IIS starts the process and that idle timeout on the app pool decides when to shut down the process. IIS knows that there are no active requests, and it will just kill the process without asking the process for permission. So there is no way for your application to stop that. (You have to be aware of that if you run any background jobs in your application - IIS doesn't know about those and could kill your app in the middle of something running)
If you run without IIS, it would never automatically shut down at all, since shutting down means that nothing is listening for new connections anymore. That's the benefit of using IIS: it can restart your application if there is a catastrophic failure.
So if you plan on keeping your application behind IIS, and you want it to never shut down, then you will have to get the settings on the app pool changed.

MVC4: Application pool keeps stopping

What are the reason for the application pool to be stopped? I am asking about stopping the application, not recycling.
Does reaching private byte memory limit is one of them? When I debugged my website, it seems that the application pool is keep getting recycled at every minute, then suddenly the application pool is stopped and giving me
Error 503 unavailable.
I found out that actually my hosting provider degraded my private byte memory limit from 500MB into 100MB and without telling me. My application has minimum requirements of 150MB-200MB private bytes limit.
I am here asking this to make sure that the problem was because the memory limit, not the other thing.
It could be that the user identity is outdated, especially if you've tried starting a stopped app pool and the next request again fails.
In IIS, go to the Application Pools under the Server, then find the correct Application Pool for your web site, and click on it. On the Advanced Settings menu to the right, select Identity and change it and enter new user and password. Click on your Application Pool again, and select Recycle to restart it.
You can also try looking at the error message in Event Viewer, under Windows Logs, Application, Details tab.
Taken from HTTP Error 503, the service is unavailable.
I was having this same issue and I couldn't find anything in the event log location that MD GHOUSE mentioned. I ended up finding a warning in Event Viewer --> Windows Logs --> System that stated that the identity in my application pool did not have batch logon rights. I am adding that user to the AD group to resolve. I hope this helps someone.
try going into the IIS and selecting the application pool that is stopping. Click on advanced settings and go down to identity. Change the item from Application pool to Local Service. Restart the application pool or IIS and problem should be solved.
In my case, its due to domain password reset. When I created the application pool, I've used my old password. But after I reset my password, then application pool was getting stopped until I go and use my new password in the application pool advanced settings.

Unable to start the Kentico application when my computer restarts?

I installed Kentico 8.2 on my computer. But every time I turn off my computer and open it again. The Kentico Application never starts. I hope you can help me about my problem.
Your problem is not a Kentico issue at all, it's an IIS configuration issue. By default, IIS is configured to only run a website when it is first accessed manually or continually being used. If the website is idle and not running and you access it, the application pool kicks up and serves up the website. If there is idle time of 20 minutes (by default) it will go into a sleep state until it is requested again. When you restart your computer, IIS is in that sleep state until the website is first requested.
Within IIS you can set a few properties to help you out. In the Application Pool connected to your website go to the advanced properties of it. Check the General>Start Mode and ensure it is set to Always Running vs. On Demand.
Secondly, in the same Application Pool set the Process Model>Idle time-out (minutes) to something greater than the default 20 minutes. This will help only after the website is already running.
Thirdly, in the same Application Pool set the Process Model>Idle time-out action to Suspend. This will help the website start up faster when it does go to sleep.
Is autostart enabled in your IIS?
All above answers are valid, but if I remember correctly, there was also an issue with Skype taking up a specific port, if you set to "Run Skype on startup". This prevents some of the IIS services/websites to start. Not sure if that relates to your specific issue, but if you've got Skype installed and set to run on startup, try disabling this and restart your PC to see if it helped.

Why ASP.NET Session is automatically lost?

I hosted ASP.NET Web App. to IIS6.
When I run Web App., The w3wp.exe process will terminate and the sessions will be lost.
I use traditional In-Process Session State.
This Page have many Process to calculate.
But in some machine that also running this Web in IIS6, It can run and have no problem. So this problem occurs in some machine.
My machine is Core2Duo CPU running on Windows Server 2003
4GB of RAM
I try to configure IIS6 to disable all events of Worker Process Recycle, but I still cannot work.
What I should do?
Thanks

Check if IIS Application is running without causing it to run

I am writing a web monitor app that gives information about all app pools / apps on my IIS server. I am looking for a way in C# to programmatically check if an IIS application is running without causing it to run if it is not.
Here is what I have found...
application is running, there are one or more sessions active.
all sessions dropped off...application still "running", app pool worker process is running.
At some point determined by IIS, the Application_End is finally executed...however, the app pool worker process is still running.
After 20 minutes, the app pool worker process finally shuts down due to inactivity.
It is between #3 and #4 that I am having trouble. The application has ended, but if I try to send an Http Request to the app, it will automatically start up. I am looking for a way to programmatically determine if the application has ended (while the worker process is still active awaiting shutdown) without restarting the Application.
I can try to provide more details if you are unsure what I am talking about.
Regards,
Jeremy
I found this on MSDN
public bool CheckIISRunning()
{
ServiceController controller = new ServiceController("W3SVC");
return controller.Status == ServiceControllerStatus.Running;
}
For this to work you need to have
System.ServiceProcess added as a reference.
Microsoft has created a VBScript file to identify the IIS Application Pools (by Process Id). If you search "iisapp.vbs" on google it should point you in the right direction.
Note: I'm not 100% sure that it will work with Windows Server 2008, but does work with 2003.
In IIS7 you can use appcmd apppool /? to see what possibilities are available.

Categories

Resources