I have a ASP.NET web application on Windows 7.
The application runs as an administrator on the server and intermittently I get the unexpected error:
System.ComponentModel.Win32Exception (0x80004005): Access is denied
at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.GetProcessTimes()
at System.Diagnostics.Process.get_StartTime()
When I call:
_process = Process.GetCurrentProcess();
_startupTime = _process.StartTime;
It looks like the issue is caused because of the way we do security. This function should only get called on start up which should happen as an Admin but if the Application Pool restarts itself after a period of inactivity (set to 20 minutes) by changing it to 24 hours the problem went away as we never have a period of 24 hours of inactivity.
Related
I'm having trouble hunting down an issue where an ASP.NET 4 application fails while trying to get user groups for a given user from time to time. The application pool associated with this application is setup to run under ApplicationPoolIdentity.
Exception Info
System.DirectoryServices.DirectoryServicesCOMException
HRESULT: 80072020
Message: An operations error occurred.
Extended Message: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1
Stack Trace
System.DirectoryServices.DirectoryEntry.Bind(Boolean)
System.DirectoryServices.DirectoryEntry.Bind()
System.DirectoryServices.DirectoryEntry.get_AdsObject()
System.DirectoryServices.DirectorySearcher.FindAll(Boolean)
System.DirectoryServices.DirectorySearcher.FindOne()
95%-99% of the time, this function works fine, but from time to time, it just starts failing. When I change the application pool to use LocalSystem or NetworkService, it starts working. When I change back to ApplicationPoolIdentity it begins failing again. The only way to get the site working again with ApplicationPoolIdentity is to reboot the server.
I was able to find a similar issue here, but the resolution was a reboot as well. I'd like to find a more permanent solution short of changing the identity of the application pool.
While a reboot will resolve the issue temporarily, there is a Microsoft hotfix KB2545850 that offers a permanent fix to the issue.
This morning I have tried to load all my websites on my local PC that has IIS 7.5 and straight away i get a HTTP 503 Error.
HTTPerr log says: 2012-08-17 08:43:26 127.0.0.1 49326 127.0.0.1 80 HTTP/1.1 GET / 503 3 AppOffline web80
So my application pool is not starting. I try restarting the app pool in IIS and I still get the error. When I look at the App pool I see that it has stopped. So I look in Event viewer:
Error: WAS : Application pool 'web80' is being automatically disabled due to a series of failures in the process(es) serving that application pool.
Warning: WAS : The Windows Process Activation Service failed to create a worker process for the application pool 'web80'. The data field contains the error number.
Looking around the web and stackoverflow, the problem seems to be caused by app pools identity being apppoolidentity. I changed this to local system and it works.
But why out the blue would this just stop working? I've read another solution that you need to provide permission to
C:\Windows\System32\config\Schema but I don't have a Schema folder.Could that be the reason why?
Really all I want to know is how do I get the application pool to reuse the apppoolidentity or where can I look to try things out? I could try re-intall iis but if I can figure out what causes this, I might be able to prevent it in the future.
Thanks
I just ran into this recently. In my scenario, I had the Application Pool Identity set to my Active Directory account under the 'Custom account' setting. Recently I updated my password so I just reset my password for the 'Custom account' accordingly and I was able to reload my application.
Log Name: System
Source: Microsoft-Windows-WAS
Date: 13.06.2012 08:34:45
Event ID: 5002
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: WIN-QU022VN756J
Description:
Application pool 'DefaultAppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.
Please provide near solution for this problem. I will appreciate the suggestion
IIS comes with a feature called Rapid-Fail Protection. By default an App Pool is configured to become disabled if a worker in the pool crashes 5 times within a 5 minute span.
The thresholds of this setting are able to be modified by right clicking on the App Pool going to Advanced Settings and modifying the 'Rapid-Fail Protection' properties. However, this event indicates that there is likely a serious issue in your application that needs to be resolved.
I got tensed about this issue and finally i got solved.
Please make sure that the following option is correct in Advance Settings in Application pool.
Application Pools>Default Application Pool > Right click and select Advance Settings.
And then check whether the option "Enable 32 bit applications" has been set as "False". It should be False
I got solved by did the above change.
I Got this error when i installed URL Rewrite Module, install correct URL Rewrite Module to fix this.
To verify this error cause of URL Rewrite Module check events logs .
windows logs>> System>> Click on recent Error, In Error details
it will show "Application pool 'DefaultAppPool(or
YourApplicationpool)' is being automatically disabled due to a
series of failures in the process(es) serving that application
pool."
Windows logs>> Application>> click on recent error, In error
details it will show "The Module DLL
'C:\Windows\system32\inetsrv\rewrite.dll' failed to load. the data
is the error."
I hope this will help You.
It's a registry permission issue. This should help:
http://support.microsoft.com/kb/885654
You might also need to add read/write permissions for NT AUTHORITY\NETWORK SERVICE (or NT AUTHORITY\SYSTEM or the account used by your application pool) to c:\Windows\TEMP.
See http://social.technet.microsoft.com/Forums/en-US/winservergen/thread/176e9b6d-7b1b-4667-b55e-330bec133f37/
I am encountering a 503 - Service Unavailable error. I checked the event log and found this:
The Module name FastCgiModule path
C:\WINDOWS\System32\inetsrv\iisfcgi.dll
returned an error from registration.
The data is the error.
Note: Every time I try to visit my website, I found that the DefaultAppPool will auto-stop.
And also found this in event log:
Application pool 'DefaultAppPool' is
being automatically disabled due to a
series of failures in the process(es)
serving that application pool.
This is because your application pool is crashing more than 5 times in 5 minutes [default settings - Rapid Fail]
Instead of disabling Rapid Fail, you should consider taking Crash Dumps and try to find out the root cause. http://blogs.msdn.com/b/rahulso/archive/2006/03/02/what-is-a-crash-technically-in-asp-net-and-what-to-do-if-it-happens.aspx
I have an ASP.NET MVC website that gets about 6500 hits a day, on a shared hosting platform at Server Intellect. I keep seeing app restarts in the logs and I cannot figure out why.
I've read Scott Gu's article here: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx
and implemented the technique, and here's what shows up in my log:
Application Shutdown:
_shutDownMessage=HostingEnvironment initiated shutdown
HostingEnvironment caused shutdown
_shutDownStack=at
System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at
System.Environment.get_StackTrace() at
System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal() at
System.Web.Hosting.HostingEnvironment.InitiateShutdown() at
System.Web.Hosting.PipelineRuntime.StopProcessing()
It seems to occur about every five minutes.
Are there any other ways to debug this?
UPDATE: Here are the application pool settings mentioned by Softion:
CPU
Limit : 0
Limit Action : no action
Limit Interval : 5 Minutes
Process Model
Idle Timeout : 20 Minutes
Ping Maximum Response Time : 90 Seconds
Startup Time Limit : 90 Seconds
Rapid-Fail Protection
Enabled : True
Failure Interval : 5 Minutes
Recycling
Private Memory Limit : 100 MB
Regular Time Interval : 1740 Minutes (29 Hours)
Request Limit : 0
Specific Times : none
Virtual Memory Limit : 0
You can easily grab the reason of the shutdown by HostingEnvironment.
You read Scott Gu article, but you missed its comments.
var shutdownReason = HostingEnvironment.ShutdownReason;
If the reason is HostingEnvironment, check the IIS application pool parameters controlling recycling. I've put a red dot near each one. Check the description in the bottom help box in your own copy for full info.
You can ask your provider to give you the applicationHost.config file where all these parameters are set. They find it in C:\Windows\System32\inetsrv\config. I'm sure you can also get them using some .NET api.
For 6500 hits a day, which is a very low hit rate, i'm betting the "Idle time-out" is set to 5mn.
Update (moved comments to here //jgauffin)
CPU Limit 0 = disabled.
Process Model Idle Timeout : 20 Minutes (20mn without a request recycles your app).
Rapid-Fail Protection enabled (5mn). You need to know the maximum failures count. If your app throws more than this exception count in 5mn it will we recycled.
Private Memory Limit : 100 MB. Yes you should profile, this is a low limit.
Regular Time Interval : 1740 Minutes (29 Hours): it will recycle every 29h.
Request Limit : 0 (disabled).
Virtual Memory Limit : 0 (disabled).
Rapid-Fail Protection enabled (5mn). You need the maximum failures count. If your app throws more than this exception count in 5mn it recycles. If it recycles every 5mn this should be the thing to check. There should be 0 unhandled exception in secondary worker threads. Wrap your code into a try catch there.
re update:
The settings asked to the provider help, but is way better to ask for information on the reason of the restarts like I mentioned on my original answer i.e. the actual log entries of the restarts like I mentioned on my orig answer. From those you can know specifically what was triggered, I've seen happen one hitting different limits.
You really have to:
profile your application with a
realistic amount of test data
My money is on hitting resource limits set by your hosting provider.
Before going crazy with optimization without a target, contact your provider and ask them to give you information on the restarts.
Typical recycles:
idle x amount of time / like 15 mins
more than x amount of memory / like 200 MB
more than x % processor over y time / like 70 over 1 minute
a daily recycle
Once you know the case, you have to find out what's taking those resources. For this you have to profile your application with a realistic amount of test data. Knowing if it is memory or processor can help on knowing what to look for.
Is IIS set to recycle the app pool frequently?
Is there some kind of runaway memory leak in the app pool?
It requires a bit of know how on what your app does here's a list of things that can cause the app to restart/reset or even shut down
StackOverflowException
OutOfMemoryException
Any unhandled exception that crashes a thread
CodeContracts use Environment.FailFast when a contract violation occurs
Exceptions are quite easy to track if you can reproduce the issue with a debugger attached you can go into Visual Studio and enable all exceptions when they are thrown not caught by user code. It will sometimes reveal intresting stuff that otherwise is hidden away.