Where did my IIS7 server go? Troubleshooting 503 "service unavailable" errors

In the previous post, I covered the “server not found” error that is a common and frustrating problem that may occur for a number of reasons after a configuration change, or when deploying a new server machine. Another common “what the hell just happened” error is the plain 503 “service available” error that looks like this:

 

What is it?

This error is generated by the WAS (formerly W3SVC) service, which is responsible for creating IIS worker processes to handle incoming http requests. When WAS fails to create a worker process, it will generate this error.

Why does it happen?

There are a number of reasons why WAS may fail to start an IIS worker process. These include invalid application pool configuration, failure to create the process due to incorrect application pool identity settings, bad IIS configuration that causes the worker process to fail to initialize, or a process crash due to application logic. I will list the most probable reasons and how to investigate / fix them below.

How do I get rid of it?

Let’s get rid of it in 4 easy steps:

STEP 1: Check whether your application pool is stopped

Once WAS fails to start your worker process a set number of times, it goes into Rapid Fail Protection Mode and stops the application pool. This prevents application crashes from taking down the machine by going into a start process / fail loop when a persistent error exists. By default, Rapid Fail Protection is set at 5 times in 5 minutes.

Once the application pool that contains your application has been stopped, all requests to applications in it will result in that plain 503 error. So, that’s the first thing we check:

> %systemroot%\windows\system32\inetsrv\AppCmd.exe list apppools



 If your application pool is stopped, then we are on the right track. The next step is to check the event log for information about why your worker process could not be started.

STEP 2: Check event log

If IIS inside the worker process fails to initialize, or WAS is unable to create the worker process, it will log an event to the “Application” or “System” windows event log respectively. Let’s check this next:

> eventvwr

Navigate to the “Application” event log first. Look for error events from IIS-W3SVC-WP source.



In this case, the IIS worker process could not initialize because it failed to load a module DLL (the path of which I “accidentally” misspelled in my configuration).

If the error occurred before the worker process could be started, such as with WAS failing to create the process, the error will be in the “System” event log. In my case, the IIS worker process had the initial error, and WAS eventually disabled the application pool after triggering rapid fail protection, leaving the following in the “System” event log:

 

----------------------------------------------------------------

UPDATE 12/10/2007:

The IIS 7.0 Health Model has been published, containing details about all Event Log error codes that are logged for worker process and service (WAS) level conditions.  It also includes the suggested diaagnostics and workaround steps for each error condition: http://technet2.microsoft.com/windowsserver2008/en/library/b19873a2-9f72-40c8-b73d-89f39cda62781033.mspx?mfr=true.

When confronted with event log messages from IIS, use this document to find and resolve the error using the health model as reference.

-----------------------------------------------------------------

STEP 3: Fix the error condition

This step of course depends on the specific error condition that you are experiencing, as indicated by the event log errors from the previous step.

Be sure to use the health model link above as reference for most of IIS error conditions that result in EventLog errors.

The following are common:

WAS failed to start the worker process:

  • The configuration is invalid.
  • The application pool identity has wrong account name or password.
  • The maximum number of worker processes is reached or out of resources.

IIS initialization failed:

  • The configuration section is invalid
  • A module DLL listed in has invalid path, or failed to load
  • A module failed to initialize, returning an error from its RegisterModule entrypoint

Application crash:

  • A module, or application component has generated a debug break, or memory access violation, causing the process to terminate abruptly.

Assuming you were able to correct the underlying error condition, you should be able to re-start the application pool and try again.

STEP 4: Re-start application pool

Now that the error is fixed, we can start the application pool and try the request again:

> %systemroot%\windows\system32\inetsrv\AppCmd.exe start apppool DefaultAppPool

(Replace DefaultAppPool with the name of your application pool).

You should see that the application pool successfully started.



Now, you should be able to re-try your request and verify that the error has gone away. If not, rise and repeat.

In the case of an application crash, you may need to debug the worker process to get to the bottom of the error. You can read about this here: Troubleshooting IIS7 503 "Service unavailable" errors with startup debugging.

You can find the first post about the timeouts and “server not found” errors here: Where did my IIS7 server go? Troubleshooting "server not found" errors.

Also, you can find a post about general IIS7 error diagnostics here: Troubleshoot IIS7 errors like a pro.

I hope you find that this takes some of the mystery out of these problems, and helps you get going quickly when you hit this on your server.

I will cover some other useful troubleshooting techniques in future posts - as always, feel free to suggest topics you care about.
Published 19 October 06 12:30 by Mike Volodarsky
Filed under: ,

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Steve Schofield said on December 27, 2006 6:56 PM:

Any recommendations in troubleshooting Classic ASP application pool crashes?

# Mike Volodarsky said on December 28, 2006 12:06 AM:

Depends on what kind of problem you are experiencing ... are you seeing ASP application errors, or experiencing worker process crashes from custom COM components you are using from the ASP scripts?  

The event log is a good source of data in the case of worker process crash, and should contain an event mentioning the offending DLL that caused the crash.  If its your COM DLL, you may choose to debug it to see further why the error occurs.

# NiHique said on April 5, 2007 6:01 AM:
thank you, your article was helpful in managing my problems with IIS7 and ASP.NET!
# you've been HAACKED said on May 18, 2007 11:49 PM:

Service Unavailable Errors in IIS 7 Are Killing Me

# Haacked said on May 18, 2007 11:52 PM:
Hi there, I tried everything in this article and nothing seems to work for me. I think something got fubar'd in my installation and I can't seem to figure out how to know for sure. Here's a post on everything I tried. http://tinyurl.com/2uuw8m Any ideas?
# Community Blogs said on May 19, 2007 12:17 AM:

I am at my wits end trying to get IIS 7 to work on my Vista Ultimate box and I have tried everything

# ServerSide said on May 19, 2007 12:32 PM:

In a previous post titled Where did my IIS7 server go? Troubleshooting "service unavailable"

# Mike Volodarsky's WebLog said on May 19, 2007 12:50 PM:

In a previous post titled Where did my IIS7 server go? Troubleshooting "service unavailable" errors ,

# iis said on May 19, 2007 1:00 PM:

In a previous post titled Where did my IIS7 server go? Troubleshooting "service unavailable" errors

# Mike Volodarsky's ServerSide said on July 26, 2007 9:33 PM:

So you just moved your application to an IIS7 server, and now you are getting an error when you make

# Deb said on August 10, 2007 1:28 PM:
I am having similar problems but my error is different. I am getting the following Application error just trying to browse the default web site: The worker process for application pool 'Integrated AppPool' encountered an error 'Cannot read configuration file ' trying to read global module configuration data from file '\\?\C:\Windows\system32\inetsrv\config\applicationHost.config', line number '0'. Worker process startup aborted. Source: IIS-W3SVC-WP Event ID: 2297 ... and then the dreaded 503 Service Unavailable error appears on the page. I am working on a fairly shiney new computer that shipped with Windows Vista Home Premium that was upgraded to Vista Ultimate last week. I tried getting IIS7 to launch a web page about a month ago and gave up but now I need to install and use Virtual Server 2005 R2 SP1 and I am stuck! I took a look at my applicationHost.config and administration.config files and I'm seeing squiggles under some of the attributes (that should be defined in DotNetConfig.xsd. For example, in applicationHost.config, in the System.webServer area, this line has a squiggle under overrideMode: When you mouse over it, "The overrideMode attribute is not declared" appears. In the area, forthe provider IISWASOnlyRSAProvide, all of the attributes are appearing as not declared: description, keyContainerName, cspProviderName, useMachineContainer, useOAEP This lead me to my machine.config file for a peek and there I noticed that the RSA provider stuff had squiggles. I had a backup copy of machine.config that was clean when I looked at it, but as soon as I made another copy of it my machine.config file, the squiggles came back. My 'clean' install files for applicationHost.config and machine.config are squiggleless. Any ideas?? As far as I know I had the same problem before the Ultimate upgrade, I just didn't drill down into the problem this far. If I can provide you with any other inforation, please let me know! Thanks a million... Deb
# Mike Volodarsky said on August 15, 2007 9:36 PM:

Deb,

The Visual Studio schema for configuration files has not yet been updated for VS 2005 (it will be in Visual Studio codenamed Orcas), so its expected to see attributes in applicationHost.config that are not recognized by VS.

The error you are getting suggests that the worker process is completely failing to access the applicationHost.config file, due a permission or invalid XML problem.  Copy applicationHost.config to applicationHost.xml and see if you can open it in IE without an error.

Also, please use ProcMon (http://www.microsoft.com/technet/sysinternals/utilities/processmonitor.mspx) to make sure that there arent any access denied errors while reading the file.

If you are still having issues after that, please post your applicationHost.config file and the eventlog error contents on forums.iis.net and we'll look at it further.

Thanks,

Mike

# Deb said on August 16, 2007 12:46 PM:

Hi Mike,

Thanks for the info. I will try your suggestions and post on forums.iis.net if I'm still having trouble.

Deb

# Logic said on August 17, 2007 7:19 AM:
Just go to Turn Windows Features On/Off and reinstall IIS and other related components. If else fails please contact Microsoft's IIS.NET and ASP.NET
# All said on August 22, 2007 6:18 AM:
Hi Mike I'm getting the following problem. Im running vista business ediition This is the error im seeing in the application log The Module DLL 'C:\Windows\System32\inetsrv\compstat.dll' could not be loaded due to a configuration problem. The current configuration only supports loading images built for a x86 processor architecture. The data field contains the error number. To learn more about this issue, including how to troubleshooting this kind of processor architecture mismatch error, see http://go.microsoft.com/fwlink/?LinkId=29349.
# Reda said on September 19, 2007 6:50 AM:
Hi Mike I get the same error messages you were getting. When I checked my spelling, it was all fine. Any suggestions please? R
# Craig said on October 4, 2007 2:37 AM:
I have the exact same problem as Deb above. Deb did you find a solution? The config file can be displayed in IE and I don't see anything off hand in procmon. Same issue - Had Vista Premium, upgraded to Ultimate and suddenly IIS goes kablooey.
# Alexxx said on October 4, 2007 3:23 PM:
I recieve an initialization problem regarding this dll: The Module name iisfcgi path C:\Windows\system32\inetsrv\iisfcgi.dll returned an error from registration. The data is the error. I believe it is related to "FastCGI" an addon for IIS which is supposed to improve performance particularly for PHP. The file is there, but, how would i go about diagnosing this problem further?
# Mike Volodarsky said on October 6, 2007 2:24 AM:

Alex,

Go to the Details tab when viewing the event in the event viewer, and find the <data>X</data> value.  "X" will be the win32 error code that corresponds to the issue you are hitting - you should post it on the iis.net forums for us to take a look.

Thanks,

Mike

# Mike Volodarsky said on October 6, 2007 2:27 AM:

Craig,

What exact error are you seeing when you make the request to the server?  Are there any errors in the application event log?

Thanks,

Mike

# Darryl Brooks said on October 23, 2007 4:39 PM:
This is by far the most useful info I have found so far on this error. My problem is I am being hosted on a shared server. Therefore, no OS or IIS solutions will work. Can anyone point to particular coding issues (I am using ASP with vbscript) that I can modify to minimize this error? The apps that cause it have been running for years without a problem prior to IIS7. I can change the code any way I need to, just not sure what might cause it. I am closing and setting to nothing each object I used. Any help appreciated.
# Mike Volodarsky said on October 25, 2007 10:59 AM:

Darryl,

The 503 error is typically caused by changes to server-level configuration (such as native modules being loaded in the worker process).  It should not occur from any page code or web.config errors (unless those errors are causing an AV).

Another possible cause is your application being overwhelemed with requests to the point where the http.sys queue is completely filling up.

There isn't really much you can do if you are on a shared server, because this is a server-level condition.  You have to ask for support from the hoster to diagnose and track down the issue.

Thanks,

Mike

# Kevin Morris said on October 29, 2007 1:07 AM:
Mike, I'm also getting the "worker procesas failed to initialize correctly...." message.. My event viewer shows - - 2276 0 2 0 0 0x80000000000000 6857 Application blue Any ideas? Thanks Kevin
# Kevin Morris said on October 29, 2007 5:05 PM:
That didn't seem to paste correctly.. I'm guessing it parsed the XML.. here it is again with < and > replaced with # so hopefully it works. - #Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"# - #System# #Provider Name="Microsoft-Windows-IIS-W3SVC-WP" Guid="{670080D9-742A-4187-8D16-41143D1290BD}" EventSourceName="W3SVC-WP" /# #EventID Qualifiers="49152"#2276#/EventID# #Version#0#/Version# #Level#2#/Level# #Task#0#/Task# #Opcode#0#/Opcode# #Keywords#0x80000000000000#/Keywords# #TimeCreated SystemTime="2007-10-29T20:34:55.000Z" /# #EventRecordID#6875#/EventRecordID# #Correlation /# #Execution ProcessID="0" ThreadID="0" /# #Channel#Application#/Channel# #Computer#blue#/Computer# #Security /# #/System# - #EventData# #Binary#00171380#/Binary# #/EventData# #/Event#
# Steven S said on November 2, 2007 2:39 PM:
Mike: Thanks for maintaining this helpful blog. I followed the process down to the event viewer (as shown above), but the error message reported isn't on the list, and I'm not sure what to do next. The error was: The worker process for application pool 'DefaultApplicationPool' encountered an error 'Cannot read configuration file ' trying to read global module configuration data from file '\\?\C:\Windows\system32\inetsrv\config\applicationHost.config', line number '0'. Worker process startup aborted. Can you please advise? Thanks. SJS
# hyper said on November 6, 2007 3:39 PM:
C:\Windows\System32\inetsrv>appcmd list apppools ERROR ( message:Configuration error Filename: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config Line Number: 0 Description: Cannot read configuration file . ) in my iis i got 503 error.
# Darren said on November 27, 2007 10:46 PM:
Mike, I had the exact same issue as Deb and Craig above. I upgraded from Vista Home Premium to Vista Ultimate, and IIS stopped working. Did you ever find a solution for them? The error I get is "The worker process for application pool 'Default' encountered an error 'Cannot read configuration file ' trying to read global module configuration data from file '\\?\C:\Windows\system32\inetsrv\config\applicationHost.config', line number '0'. Worker process startup aborted." Thanks, -Darren
# AliM said on December 3, 2007 9:21 AM:
I had the same problem, the above solution was not understandable, so looked for other solution and found the following post and it worked..... Can you check if you have leftover directory for pe-release version of framework in %windir%\Microsoft.Net\Framework (anything like v2.0.* other than v2.0.50727) - if so, delete those directories and restart the app-pool. Thanks
# Mike Volodarsky said on December 4, 2007 10:39 AM:

Steven, Hyper, Darren,

The error you are getting indicates that the worker process failed to read server configuration.  In the corresponding event log error message, look in the details tab for the <data></data> element, which will contain the HRESULT error code.

Most likely this will be 0x80070005, which means that the worker process was denied access to the applicationHost.config file.  Check the permissions on the file and make sure that the IIS_IUSRS group has access (dont do this on Windows Server 2008 and Windows Vista SP1, where each worker process will have a separate copy of the applicationHost.config configuration file and wont have access to the main file).

If its another error, please post.  If your problem is caused by the presence of pre-release versions of the .NET framework as per Alim's post, please let us know so we can investigate further.

Thanks,

Mike

# Darren said on December 8, 2007 12:07 PM:
Mike, Setting the permissions worked for me. Thank you very much for your help. As an FYI, I didn't have any residual directories from a previous version of .NET. -Darren
# Rod Gibson said on December 18, 2007 11:59 PM:
I am trying to run a PHP script that calls a MySQL database file on IIS7 and Error 500.0 is displayed. I tried to grant some permissions on the \Windows\System32\inetsrv folder but it doesn;t allow me to make changes (Access Denied). I ticked off the Users Account and rebooted but still it doesn't allow me to change security settings. I'm on my own machine at home so of course I am the admin and owner of the equipment. What can I do to revert this situation? Thanks a lot in advance. Rod
# Niculae Stratica said on February 2, 2008 8:37 PM:
Hi, I had the same problem as Darren: IIS returned Error 503 on Vista Ultimate. The App error log showed this message: The worker process for application pool 'Classic .NET AppPool' encountered an error 'Cannot read configuration file trying to read global module configuration data from file '\\?\C:\Windows\system32\inetsrv\config\applicationHost.config', line number '0'. Worker process startup aborted. The Event ID is 2297. I do have .Net 1.1, 2.0.* and 3.0 in C:\Windows\Microsoft.NET\Framework. It does not make a difference whether I delete all the non 2.* or not. What made it work eventually was what Mike suggested i.e. add the IIS_IUSRS to the list of users for file applicationHost.config. Thanks Mike, Niculae
# LJacob said on February 13, 2008 1:15 AM:
In Windows 2008 Server I am getting an error as 'IIS not installed' though IIS is installed. The installscript which contains the check for IIS does the following set objIIS_Root = CoGetObject("IIS://localhost/W3SVC/1/Root", ""); if (IsObject(objIIS_Root)) then blnRetVal = TRUE; endif; Is there a workaround to skip this error in Windows 2008 Server? For Vista also we faced similar issue for which we selected the 'IIS6 Metabase Compatibility' from 'Windows Features on or off'.
# Mike Volodarsky said on February 13, 2008 3:37 PM:

LJacob,

You need to install the Metabase Compatibility role service in Windows Server 2008 for the legacy WMI provider to work, just like you do on Vista.

Thanks,

Mike

# IIS 7.0 Server-Side said on February 26, 2008 12:07 AM:

As many of you know, IIS 7.0 provides the ability to start and stop Web sites, and application pools.

# Tomas said on March 9, 2008 1:57 PM:

[quotation]

Most likely this will be 0x80070005, which means that the worker process was denied access to the applicationHost.config file.  Check the permissions on the file and make sure that the IIS_IUSRS group has access (dont do this on Windows Server 2008 and Windows Vista SP1, where each worker process will have a separate copy of the applicationHost.config configuration file and wont have access to the main file).

[/quotation]

And what is supposed to do on Vista 64 SP1 ? I get 0x80070005 error after installing SP1 and VS 2008.

Thanks!

# Chris said on March 13, 2008 9:00 AM:
503 - applicationHost.config Was there a solution for Debs problem on 10th August She was getting the 503 error and in the event viewer recieved the event error id 2297 'Cannot read configuration file ' trying to read global module configuration data from file '\\?\C:\Windows\system32\inetsrv\config\applicationHost.config', line number '0' I am having this exact problem. I have also, (like Craig - Oct 4th - who was also experiencing this problem) upgraded from Vista Premium to Ultimate. I have tried the suggestion you gave of changing the applicationHost.config to .xml to ensure the xml is valid (by opening in IE ). It opens fine. Is there anything else I can try? Thanks Chris
# James said on June 10, 2008 6:42 PM:
Thanks, that worked. My apppool was stopped...Now everything works...
# devi said on July 10, 2008 6:44 AM:
very very good article...
# Bartek said on August 21, 2008 8:39 PM:
Mike, excellent article and it helped me greatly. I started getting 503 "service unavailable" errors on my IIS 7.0 box and ended up needing to re-enable 64-bit mode through the command prompt. Details here: http://blog.evonet.com.au/post/2008/08/22/503-service-unavailable-errors-when-IIS-running-in-32-bit-mode-on-64-bit-Windows-Server-2008.aspx
# tobia said on September 11, 2008 6:04 PM:
With id event 2276 and error code 80131700 i resolved my problem simply with the removal of all 2.0.* framework version in "C:\Windows\Microsoft.NET\Framework", with the exception for only the v2.0.50727. And so It works! Thank U everyone!
# Ben said on February 15, 2009 8:19 PM:
Excellent! A++++ Will read again Thanks for helping me solve my problem
# new said on February 20, 2009 7:48 AM:
hi, i am new to IIS world and know nothing about it and will b very grateful if anyone can help me with the error mentioned below....i am using iis7 ....every time i try to connect to localhost following error arises.... failed to connect (this is the caption of error) there was an error when trying to connect. do you want to retype your credentials and try again? details: 'Microsoft.Web.Administration,Version=7.0.0.0,culture=neutral,PublicKeyToken=31bf3856ad346e35' or one of its dependencies. the system cannot find the file specified. plzzzz help!!!
# Mike Volodarsky said on February 20, 2009 11:56 AM:

new,

The error you describe doesnt quite make sense.  Please provide a screenshot.  Post to forums.iis.net for more help.

Thanks,

Mike

# new said on February 21, 2009 10:01 AM:
Thank you Mike! I am looking for answer from everywhere. I have another question....it may be very stupid to ask but I said that I dont have any know-how about it. My question is when we are connecting to localhost, through IIS 7.0 Manager, what do we write in localhost textBox?...is it the IP or any name or it remains as localhost??? and in the password textBox which password is to written??..I didnt put any password....
# new said on February 22, 2009 4:13 AM:
Okay! Thank you Mike.
# Charles T. Piano said on March 25, 2009 7:07 PM:
Hi Mike, I am encountering "server error 503" into which causes my server to slowing down. This error can also make the iis totally stopped and hanged. I have search the solution about this problems and they suggested that it might be a memory leak on my server side, I am using Windows Server 2008, can you help me resolve this error, or does anyone can help me. Thanks, Charles
# dev said on May 1, 2009 7:50 AM:
Hi Mike I have 2 websites in IIS7, one for MOSS 2007 and another for WCF service. Both of them use different app pools. When I set the Managed pipeline mode to Integrated, both the websites don't come up, but works fine in Classic mode. The MOSS web site throws the error "Server application unavailable" . I don't see any error in event log either. When I try to browse the wcf service I get the error "HTTP Error 500.24 - Internal Server Error An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode." and most likely causes as "system.web/identity@impersonate is set to true". I have checked the status of apppool, they are all started. I did restart them again, but still the same error. I did not see errors in event log except for this information: A request mapped to aspnet_isapi.dll was made within an application pool running in Integrated .NET mode. Aspnet_isapi.dll can only be used when running in Classic .NET mode. Please either specify preCondition="ISAPImode" on the handler mapping to make it run only in application pools running in Classic .NET mode, or move the application to another application pool running in Classic .NET mode in order to use this handler mapping. Any help is highly appreciated. Are there any significant advantages that I get when using Integrated vs Classic. If there's no performance benefits, then probably I would stick with Classic mode. Thanks
# Fred said on May 3, 2009 7:45 PM:
Thank you so much! Can the Apache installation be the reason why it was stopped? Sadly I have to use both servers and its a pain in the ... cause the services. Thank you!
# melbournegam said on May 11, 2009 11:16 AM:
Mike, u r sexy!! i like ur pic :) u r so cute!! though I hate IIS!!!

Leave a Comment

(required) 
(optional)
(required) 
Enter the code you see below


About Mike Volodarsky

For the past 5 years, I was the core Program Manager for Microsoft ASP.NET 2.0 and IIS 7.0 products. I drove the design and development of the IIS 7.0 web server core, the IIS FastCGI support, the AppCmd command line tool, the ASP.NET Integrated pipeline, and other special projects around server security, performance, and scalability. Now, I am working on my own on cutting edge web server tech on top of the Microsoft IIS platform, and continue blogging about it here.

About me



For the past 5 years, I was the core server Program Manager for the IIS 7.0 and ASP.NET 2.0 products at Microsoft.
Now, I work on advanced web server tech using IIS 7.0, .NET, and Windows Server 2008 and write about it in this blog.

View Michael Volodarsky's profile on LinkedIn

Writings



TechNet Magazine
>Top 10 Performance Improvements in IIS 7.0

MSDN Magazine
>IIS 7.0: Build Web Server Solutions with End-To-End Extensibility
>IIS 7.0: Enhance Your Apps with the Integrated ASP.NET Pipeline
>IIS 7.0: Explore The Web Server For Windows Vista And Beyond
>Design and Deploy Secure Web Apps with ASP.NET 2.0 and IIS 6.0
>Fast, Scalable, and Secure Session State Management for Your Web Applications


Tools and Modules

LeechGuard
IconHandler 2.0
DirectoryListing
HttpRedirection
IIS Auth for Wordpress
iisschema.exe
PortCheck.exe v2.0

Popular Posts

- ASP.NET 2.0 Breaking Changes on IIS 7.0
- Develop IIS7 modules and handlers with .NET
- Troubleshoot IIS7 errors like a pro
- Troubleshooting 503 / "service unavailable" errors
- Troubleshooting "server not found" errors
- Create IIS7 sites, applications, and virtual directories
- Run Ruby on Rails with IIS FastCGI
- VS Debugging of ASP.NET applications on Windows Vista
- Stop hot-linking with IIS and ASP.NET

Tags

Search

Go

This Blog

Archives

Good IIS Blogs

Disclaimer

These postings are provided as is with no warranties, and confer no rights. The views expressed in this blog are entirely my own.

Syndication