Muqeet's blog
-
IIS 6 and IIS 7 - How different are they?
This is something that I wanted to write from a long time now.Yesterday a friend of mine asked me exactly the same question and I thought what a better time than now to write an entry ... To start off lets begin by understanding the request pipeline that exists within IIS 6. For IIS 6, security was the major area of concern along with a lot of conceptual changes, in comparison to it's predecessor. All in all, IIS 6 was an engineering release. The diagram below is how the request pipeline worked for IIS 6.
A point to be noted in the above diagram is the monolithic style of a process that was technically carried out by the w3core.dll for a worker process. Moving on, take note that in the above process we may have parts of the pipeline that we might never use within our environment but they would all be included in the webserver request and response process conceptually. We also had to patch the server for instance for a feature that we may not even be using. Why? because that was included in the same process and was part of IIS. However, these things have changed in IIS 7.
Note: I will be considering the ASP.Net request queue later.
Below is the IIS 7 architecture. From the first look itself we can understand that the present architecture is far more modular than IIS 6. It provides us with lots more flexibility and opportunity to customize the server depending on our environment. What has happened here is that all the features we saw clubbed earlier in IIS 6 are now taken out of the main process and are now available in different modules.
We can plug these modules in or out of the webserver itself on the basis of our needs. Further, that helps us in configuring a very lite-weight server because if you don't need a feature you can choose not even to install it. For example, if you plan, not, to make use of Basic Authentication then you can choose not to install the feature altogether. I feel this is a great change that can help many IIS admins in managing their environments even more better. You have over 40 modules that you can choose to install during the setup.
Another great feature that you get from IIS 7 is it's extensibility. With IIS 7, two new IIS API's were introduced namely MWA (Microsoft.Web.Administration) and MWM(Microsoft.Web.Management) using which it is pretty easy to write a managed module that can be directly plugged in to the webserver which will receive the same treatment as that of the other installed modules on the server.
Over the past 6-8 months Microsoft/IIS team has released great extensibilty modules which can be found at www.iis.net/downloads.
Moving on with the request pipeline processing, lets now figure out how IIS 6 processes an asp.net. If you check the below diagram, after initial authentication by IIS, the requested is forwarded to the aspnet_isapi.dll which then takes care of processing the ASP.NET request. Check out the duplication of a few modules in the same process, which is not entirely necessary.With IIS 7, this is no more the case. Because of the modular architecture there would no need for any duplication, the ASP.Net components are plugged in directly into the IIS request queue. This is what is known as the Integrated Pipeline architecture. This feature has huge advantages when we start considering complex environments where in a lot of processing is carried out on every request.
Apart from the technical aspect of IIS 7, I feel the new UI for the IIS Manager is also something that a lot of IIS admins will be very thankful for. If you haven't seen it already it has this very similar tree view structure on the left-hand side. In the center pane, you would see two sets of choices that are the Features View and the Content View. The features view is exceptional in showing the admin all the different features that are included for the selected option. And towards, the right-hand side you have this very handy Actions pane that lets you carry out various actions depending upon the feature you have selected.
More good news, if you are a good developer and have written your own module well you can check out this blog for more insight on how to create a UI for the same.
To sum it up IIS 7 gives us great customization and modularity features along with all the stability and security it has carried on from IIS 6.
To know more about the new modules and features on top of IIS 7, check out IIS.Net Downloads website and my previous posts on Running PHP on IIS 7 with FastCGI and the IIS 7 PowerShell Provider -
Web.config - What's new with IIS 7
Recently, I came across certain questions on web.config file and it's relation to . To be honest, if you are a web developer (using .Net atleast), understanding the web.config file is imperative to you. So lets take it from the basics.
Definition of Web.config files:
Web.config is a XML document that defines and maintains the configuration for an ASP.Net application. Web.config file is divided by tags that contain information specific to that particular section, be it, authorisation, authentication, custom errors, etc. These settings would go into < system.web>< /system.web>. Apart from this you can define your own application specific settings within < appsettings>< /appsettings > . A known example of this would be the use of database strings used within your ASP.Net application.
Therefore, the simplified web.config file will look like the one below:
< system.web>
< !— sections-->
< /system.web>
< appsettings>
< !— sections -->
< /appsettings >
< /configuration>
A web.config file is created at the root of your ASP.Net application, however, seperate web.config files can also be created at a virtual directory, on a lower level as well. These child web.config files will control the configuration settings of the virtual directory they are present in and the ones below them.
This was the scenario till IIS 6. With the improvement of the IIS 7 architecture(Integrated Pipeline) we now have the ability for better integration of ASP.NET and IIS 7. Therefore, developers and IIS administrators can configure IIS 7 settings from within the web.config file(Provided you have the necessary permissions). The new XML tag that contains all the configuration settings related to IIS 7 would go into < system.webserver>< /system.webserver>
For information on the configuration schema of .NET and IIS configuration schema take a look at these:
http://msdn.microsoft.com/en-us/library/dayb112d(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms689429.aspx -
Application Pools in IIS 6
Hi, I recently came across this question on the IIS community newsgroup. This would be a great question to share, as the answer incorporated has fundamental points regarding IIS 6 Application Pool that will really help a beginner to start off:
Question.) I will soon install a small Ajax Asp.Net "single page" site on a client site. This page is simply polling a Asp.Net Web service, which fetches and returns parameters (temperature, air conditioning status...) to be displayed on the page. This is implemented with an Ajax Timer control server.
1.) Now this is my first "industrial" web site, and I'm concerned about its robustness. Do I need to create a specific pool on IIS 6 for the web service and the site ?
2.) I'm aware than it is possible to "recycle" a pool. Do I need this ?
Just to give you a background, the user is using Windows Server 2003 Standard Edition running IIS 6 and has all the required dependencies installed properly (ASP, .Net). Next, lets grab some base level knowledge on Application Pools before we hit on the answers.
To begin with, an Application Pool is a concept that was introduced in IIS 6. The major reason for this was Application Isolation and in a short while you will understand how.
The 2 modes that IIS operates in are the IIS 5 Isolation mode, where in, IIS 6 acts similar to IIS 5 architecture. Therefore, you cannot make use of AppPools or it's concept in this mode. Whereas , when you run IIS 6 in the Worker Process Isolation Mode (WPIM) you can combine/separate web applications or web sites into groups called Application Pools. Application Pools are nothing but the URL collection of the web application or web site that will now run under one or several worker process (W3WP.exe).A quick point: While an Application Pool is serving a request, the same request cannot be routed to another Application Pool. However, subsequent request can go to a new AppPool (if defined).
Every application within an application pool shares the same worker process. Therefore, applications that run in 2 different AppPools cannot share or effect each other.
What is the use?? OK...Here comes our
Answer 1.) IIS 6 provides very effective method of process isolation by separating web applications based on w3wp.exe (worker process executable). Hence, an AppPool that may have a dirty code will not effect the website in an adverse manner. Your application pool running a good code will still be up and running as ever.
If you are an IIS admin or a developer who has fair bit of knowledge on IIS will surely understand how important this development is.
Having understood that. let us know try and figure out how the request processing is happening. Now, we all know that the request initially comes to the IIS kernel mode driver HTTP.sys. Further, within HTTP.sys an application pool is represented by a request queue, from which the user-mode worker processes that service an application pool collect the requests.
Knowing this we can move on to our next concept called, Application Pool Recycle. Every now and then when your application goes bad or the application pool crosses a defined set of parameters for an Application Pool property, the w3wp.exe concerning the AppPool will be shutdown (Killed) and a new w3wp.exe will automatically be created in it's. This provides you to have your Application Pool in good health, always. For the sake, of the blog's length I will not go into those parameters and properties but if you wanna know then drop in a comment and I will get back to you. Application Recycling is very important but then it depends on what parameters
and properties of an AppPool you would like to have it recycled. Done with Answer 2 :)
I think I might come up with a few blogs in near future on IIS. Stay Tuned!! :D -
Troubleshooting: Exception Error Codes - What's the Mystery!
Very often as sysadmins we come across numbers that make no sense. Give the same to a debugger and he\she will make your life simpler and happier.
Well I am a no different sysadmin! (well atleast that is what I would like to call myself)
However, off late my association with with these numbers has increased because I have started to understand what some of them mean. -
How To: Using IIS 6.0 Command Line Utilities - Part 2
Continuing my last post on using Command line utilities with IIS 6.0 I will now be discussing on how to use some of those command which can make our life as an IIS admin happy!
Lets start with adsutil.vbs
Working with adsutil.vbs is fairly simple once you get to know how is accepts commands. To know the procedure you must understand the flow of Metabase.xml
Let's start with this easy and short command...>cscript.exe %systemdrive%\inetpub\adminscripts\adsutil.vbs enum w3svc /P
You will get a reply similar to this:
[/w3svc/1]
[/w3svc/AppPools]
[/w3svc/Filters]
[/w3svc/Info]
We have just enumerated the paths for w3svc by using the /P switch. In my case you see /w3svc/1 as I am running with just the default website. But you would see similar entries of /w3svc/Website_identifier format, if one had more websites. If you want to enum the complete data as well just remove the /P and run the same command.You will loads more data
Even better:>cscript.exe %systemdrive%\inetpub\adminscripts\adsutil.vbs enum_all w3svc
Huge information right! That just enumerated the entire w3svc for us. Run this command to get the output page by page wise so that we can actually read it this time ;)>cscript.exe %systemdrive%\inetpub\adminscripts\adsutil.vbs enum_all w3svc | more
Press space bar to view the next page. Anyways this was just something to get us warmed up!
Now lets get something that we might need. I am going to be taking scenario wise.
Scenario 1:
You need to ENUMERATE a few basic settings of your Default Web Site. Here's how you do it:>cscript.exe %systemdrive%\inetpub\adminscripts\adsutil.vbs enum w3svc/1/
This is will give you a very basic overview of your website. Technically, the previous command will enum all the parameters within the location w3svc/1/ for the Key type IISWebServer with Website Identifier 1 from the In-Memory Metabase.xml. So if you would want to have a look at another site just replace the ID of that site.
Scenario 2:
You need to GET a particular property of your website. Let us consider we need to know the physical path of a directory named test under Default Web Site. Here's how you do it:>cscript.exe %systemdrive%\inetpub\adminscripts\adsutil.vbs get w3svc/1/test/path
The only thing to get here is that you would need to mention the directory name(test), followed by the object(path) you wish to find.
Scenario 3:
You need to SET new bindings on your Default Web Site. Here is how you do that:>cscript.exe %systemdrive%\inetpub\adminscripts\adsutil.vbs set w3svc/1/ServerBindings ":81:"
This will set your Website Server Bindings to port 81. Simple enough right!
To save all of the burden of reading long articles let me end adsutil.vbs here. To be honest this was pretty introductory stuff with adsutil.vbs
iisweb.vbs
This is a very useful utility if you want to create, delete or operate upon the status parameters of an IIS website. iisweb comes in very handy when you want to view basic settings and status of a website running within your network. Run this command>iisweb /query "Default Web Site"
The above command will tell you the current status, bindings with the name of the web site. You can also put together varioius website running on the same server to get a cumulative information. iisweb commands can run on your remote IIS machines.
iisvdir.vbs
A useful utility to create delete and query virtual web directory on IIS 6 machine. To learn more about the difference about a virtual directory and appplication within IIS check my previous post. You can operate iisvdir command on remote IIS machines as well.>iisvdir /s Server1 /u "username" /p "password" /create "New Vdirectory" Mydir "Physical Path"
Here is a sample script that is going to create a website for us: Copy paste the following and name it as site.bat.
Run site /? for help. Enjoy!
@IF ?%_ECHO%?==?? ECHO OFF
rem This script will create, start, and give us the status using IIS commmand line utilities
rem Written by MA Khan, http://www.iisworkstation.com
SETLOCAL
SET WEBNAME=%1
SET IP=%2
SET PORT=%3
SET SITE_PATH=%4
SET WEB_CREATE=iisweb
rem Provide Help!
IF /I ?"%WEBNAME%"? EQU ?"HELP"? GOTO :Help
SET NEED_HELP=%WEBNAME:?=%
IF /I ?"%NEED_HELP%"? NEQ ?"%WEBNAME%"? GOTO :Help
rem start execution
:menu
ECHO.
ECHO.
ECHO Website creation script by MA Khan
ECHO Version 1.0 BETA 1
ECHO.
ECHO ------------------------------------------------------------ -------------------
ECHO --^>This script is going to create, start and give us details on the website that we create.
ECHO --^>Website is going to be created by using %WEB_CREATE%
ECHO ------------------------------------------------------------ -------------------
ECHO.
ECHO.
rem Start the actual work
rem input validation
ECHO Starting input validation...
IF /I ?%IP%? EQU ?? ( ECHO.&ECHO Validation Failed!&Echo.&Echo Check help for the syntax&GOTO :Help)
IF /I ?%PORT%? EQU ?? ( ECHO.&ECHO Validation Failed!&Echo.&Echo Check help for the syntax&GOTO :Help)
IF /I ?%SITE_PATH%? EQU ?? ( ECHO.&ECHO Validation Failed!&Echo.&Echo Check help for the syntax&GOTO :Help)
IF NOT EXIST "%SITE_PATH%" (
ECHO.
ECHO ERROR: Site physical path is not found!
ECHO Please Specify the right address
GOTO :EOF
)
ECHO Validation Succeeded...
ECHO.
ECHO Details given:
ECHO Website Name: %WEBNAME%
ECHO IP: %IP%
ECHO PORT: %PORT%
ECHO SIte Physical Path: %SITE_PATH%
ECHO.
SET CONFIRM=
SET /P CONFIRM=Type EDIT to edit choices or hit ENTER to proceed:
IF ?%CONFIRM%? EQU ?? GOTO :Create
ECHO.
ECHO Press ENTER to accept [%WEBNAME%], or provide new value (Web Site Name)
SET /P WEBNAME=Web Site Name:
ECHO Press ENTER to accept [%IP%], or provide new value (IPV4 Addres only)
SET /P IP=IP V4 only:
ECHO Press ENTER to accept [%PORT%], or provide new value (Port Number)
SET /P PORT=Port Number:
ECHO Press ENTER to accept [%SITE_PATH%], or provide new value (Physical Path of your website)
SET /P SITE_PATH=Physical Path:
ECHO ------------------------------------------------------------ ---------------
ECHO Restarting with fresh Values
ECHO ------------------------------------------------------------ ---------------
GOTO :Menu
GOTO :EOF
:Create
ECHO Starting the website creation...
ECHO.
iisweb /create %SITE_PATH% "%WEBNAME%" /i %IP% /b %PORT%
ECHO.
iisweb /query %WEBNAME%
ECHO.
ECHO We are good to go
GOTO :EOF
:Help
ECHO.
ECHO HELP:
ECHO.
ECHO Syntax:
ECHO site [websitename][ipaddress][port][physical path]
ECHO.
ECHO Description:
ECHO This script is going to create, start and give us basic details on the website that we create.Website is going to be created by using %WEB_CREATE%.
ENDLOCAL
GOTO :EOF -
How To: Using IIS 6.0 Command Line Utilities - Part 1
Q.) I would like to control a few operations of my IIS management through batch files. What I am looking at are simple tasks such as Restart IIS on development servers, viewing configuration and stuff like that. How can I possibly achieve that?
I am pretty new at IIS, so please excuse me if this is a simple question.
Ans.) I will be giving you a know how of various command line utilities that you can use if you are running Windows Server 2003 with IIS 6.0. But, from there on it depends on how you make use of this utilities to achieve what is actually needed in your environment.
Let us first start with knowing the different utilities that come by default:
adsutil.vbs - This is the most important command line utility available at your disposal. It lets you work with the entire MetaBase properties. adsutil is located at %systemdrive%/inetpub/AdminScripts/adsutil.vbs by defaultSomething that I recently learned: Changes made using adsutil.vbs are immediately reflected as these changes are made to the in-memory Metabase and written to the MetaBase.xml file in 2 minutes.
iisreset - This tool gives you all sort of information on Internet services running on your machine along with the ability to start, stop, restart, and reboot of the machine. This is something that I use quite often.
iisapp.vbs - This utility comes in very handy while troubleshooting an issue. iisapp.vbs gives you the information about the w3wp.exe, it's associated PID(Process ID) and the Application Pool it corresponds to. This utility is located at %windir%\system32\iisapp.vbs
iisvdir.vbs - Lets you create, delete or query a web directory, picked the previous line directly from the help file ;). This is something that I like to user very often as it even works to find quick data from remoteIIS machines. Located at %windir%\system32\iisvdir.vbs
iisweb.vbs - You can create, delete, start, stop or pause a website using iisweb. Really helps if you want to create a website programmatic. Located at %windir%\system32\iisweb.vbs
iisback.vbs - This script lets you backup/restore your IIS settings. Actually it can do a little bit more than that :) it can also list and delete your IIS backups. But these 2 really don't matter much to any of us. iisback.vbs is also located at %windir%\system32\iisback.vbs
iisCnfg.vbs - This script can import, export and copy IIS configurations from one machine to another. To be honest, I haven't really used this one a lot and haven't seen this used in production a lot either. Located at %windir%\system32\IIsCnfg.vbs
iisext.vbs - This is a cool script to have while you are on your development machines. I like the kind of data if outputs. Basically, iisext enables you to play around with your web service extensions. Again, located at %windir%\system32\iisext.vbs
The 2 other scripts related to IIS (FTP) are: IIsFtp.vbs and IIsFtpdr.vbs also located at %windir%\system32\
So as you can see IIS doesn't ship just with cool feature set it also brings along with it great tools and scripts to make our work easier.
If you are a beginner the 1st thing I recommend is to find out how to use HELP. Simple, here is how you would get that info
ADSUTIL.VBS -From the command prompt run
For all others:
cscript.exe %systemdrive%\InetPub\AdminScripts\adsutil.vbs helpFrom the command prompt run : [scriptname] /?
Majority of the help files for these tools are self explanatory and you really wouldn't much help even if you are a little accustomed to IIS.
However, I guess I will be writing a detailed post on adsutil, iisweb and iisvdir put together. That should bring more meaning to THIS post. Till then try them out, you will be relieved to see how easy they makes your daily tasks! -
How to: Install PHP 5 on IIS 7 with FastCGI
While working today I came across my dumped and lost php applications, I use to work on long ago. The moment I saw them I knew I couldn't resist to see them working again. These php code happen to be some of the earliest piece of code I have written. And soon enough it struck me that I had never installed PHP my Vista or on the Windows Server 2008 evaluation copy that I have. Well when better than now! Quickly, I stumbled upon a resource written by Mike and everything worked like a charm. However, I noticed that a lot of people have doubts in various changes that need to be made on both IIS and php.ini
Hence I thought this time instead of writing a step by step instruction guide and confuse all of you, I will show you guys of how it's to be done. Please pardon the voice. I have a few problems with my audio encoder. Having audio for Windows Server 2008 on VMWare Server was in itself a challenge! Check it out!
It's also available on YouTube at this location.
The parameters that need to be uncommented in php.ini are:
fastcgi.impersonate
cgi.fix_pathinfo
cgi.force_redirect --> once done change the value to 0 from 1
open_basedir --> put in the physical location of your php applications. (example in the video: c:\inetpub\wwwroot\phpapps)
Let me know if you need any more info on this. I think I might come up with a few more articles or videos on IIS with PHP.
Have Fun! -
Troubleshooting: Could not start the IIS Admin Service on Local Computer
Q.) When I try to start the IIS Admin Service from services.msc I receive the following error:
Could not start the IIS Admin Service on Local Computer
At the same time I can also see the following message in the System event log:
Error2: The system cannot find the file specified.Error: The IIS Admin service terminated with the following error. The system cannot find the file specified
Ans.)This error usually occurs when the MetaBase.xml file is either missing or has been corrupted. MetaBase.xml is the file wherein the IIS 6 configurations are written to and read from.
Source Name: Service Control Manager
Event ID: 7023The default location for MetaBase.xml is C:\WINDOWS\system32\inetsrv\ . The default location for MetaBase.xml file back up is C:\WINDOWS\system32\inetsrv\History\
To solve this problem you can either restore the copy of the MetaBase.xml file (If you have a separate backup) or grab a copy from the History folder and place it in the C:\WINDOWS\system32\inetsrv\ folder. After which rename it to MetaBase.xml. Rename it to MetaBase.xml? Yeah! That's because in the History folder you will find the backup in the form MetaBase_0000000244_0000000000.xml . Subsequently, you will also find backups of the MBSchema.xml in the same format.
The MetaBase.xml file is backed up whenever you make any configurational changes to websites, application pools or any IIS related settings. By default, C:\WINDOWS\system32\inetsrv\History\ contains 10 most recent backups. However, this property itself can be changed from MetaBase.xml. Here's how to do it,
Open up Metabase.xml file in your favorite text editor. Now look for the section that says IIsComputer. In this section you will find an entry which says, "MaxHistoryFiles". By default, the value of this property is set to 10. You can change that value to whatever you want. Save the changes and start the IIS Admin Service.
All said, this is not the recommended way of changing the MetaBase.xml file :) Do not change the Metabase.xml file directly until you are very certain of what you are doing. But, if not this way then how? Very simple, just run the following command from the command prompt:cscript.exe adsutil.vbs set /MaxHistoryFiles "12"
As you can notice I am changing the value of the maximum history file to 12. You can place any number there that you want. Now here's something interesting! There may be cases where in you will open the MetaBase.xml file after running the above command and do not see your change reflected. The changes only reflected after you restart the IIS Admin Service. Well that's because you do not have Enable Direct MetaBase Edit check box selected in the IIS properties. To see the changes take effect instantaneously run this command from the command prompt:cscript.exe adsutil.vbs set /EnableEditWhileRunning "1"
Note: Sometimes after you restart the IIS admin service, the websites are in stopped state and you will have to start them manually to get going.Update 21/08/2008: I wouldn't want you to enable Direct Metabase Edit for this scenario, as I figured out that when you use Adsutil.vbs the changes are made into the IN-MEMORY metabase.They will be reflected instantaneously in your environment and will then be written to the physical Metabase.xml after 2 mins.
Now you are all set to reflect changes as soon as they are made. However never do this on a production box. This was shown for instructional purposes so that we move along quickly. :) To de-select the Enable Direct MetaBase Edit check box run this commandcscript.exe adsutil.vbs set /EnableEditWhileRunning "0"
Problem solved and we also know a little about MetaBase.xml file now. Let me know if you have any issues!
I will soon be coming out with posts on IIS command line utilities and Metabase.xml -
Blog using Nokia N81
Hey ppl,....
It was just today that i found that my Nokia N81 along with the vodafone connection that I have is capable of delivering internet a great pace...
You are gonna find this post as good as a sms coz I m not really fond of messaging... :-)
Anyways i found an another thing about IIS 6... When you install sso product webagent by netigrity on a server running IIS 6 it becomes necessary to go for a reboot of the server... Orelse ur web pages would return a service unavailable error... That is because IIS would not be able to load the necessary dll files required by the siteminder virtual application... The application events would be full of errors like "The IIS service could not be started because it failed to load the dll required by the install location of netigrity" ... I will let u know the event id when i reach home... That shouldn't take long ... M alreabw in my cab and almost there...
EDIT: Also found that if the webagent log file doesn't have proper privileges, in such a scenario as well you could face this error... And the event id would be 2214 & 2268... and the event would say ..."The HTTP Filter DLL C:\Program Files\Netegrity\SiteMinder Web Agent\Bin\ISAPIWebAgent.dll failed to load. The data is the error."
and something likeCould not load all ISAPI filters for site/service. Therefore startup aborted.
So just let me know if u have any more questions in this regard:-)
This was fun :-) ... So now I can be in touch with u guys when m travelling -
Troubleshooting: IIS 6 Status and Substatus codes
I thought it would be a great idea to write this down as an entry.The information that I am going to share now has helped me to troubleshoot a majority of cases I have had on IIS.
Lets start by understanding what are status and sub states codes.
Everytime IIS receives a request, if IIS logging in enabled, IIS logs the request into a Log file. In IIS 6 logging in enabled by default however in IIS 7 it's a choice.
To a beginner, the common questions that arise at this point are,
Q.) How do we drill down to the logs of an appropriate website?
A.) Here is how you do it.
By default,In IIS 6 logs are stored at C:\windows\system32\LogFiles\
Once you get to this location you would be seeing entries like this W3SVC1, W3SVC87257621.
In IIS 7 the location would be C:\inetpub\logs\logfiles\
Q.) What do these entries mean?
A.) W3SVC stands for website and 1 or 87257621 stands for the unique identifier that is associated with a particular website.
Q.) How do you know which identifier is associated with which website?
A.) Goto, Inetmgr -> click on Web Sites and take a look at the right hand side screen ... And there you have it the Identifier column. This identifier is unique and no 2 websites have the same identifier. Even if you delete and recreate the same website you will notice that the website identifier is different.
Once you go into the log folder you will see logs depending on the format you have chosen. By default in IIS 6, they are daily. And the log filenames are in the format exYYMMDD.log ... (ROVASTAR, thanks for the inputs)
A typical Log information for a request would look something like this ....2008-04-11 20:39:48 127.0.0.1 GET /test/1.asp - 80 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2; +.NET+CLR+1.1.4322) 200 0 0
2008-04-11 20:40:04 127.0.0.1 GET /test/1.asp - 80 - 127.0.0.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2; +.NET+CLR+1.1.4322) 404 2 1260
In the above example I have highlighted the Status Code and the Sub-Status code ... In the first case we have the values as 200 0 where in the status code is 200 and the sub status code is 0. 200 status code stands for "Request ok." Therfore, just by a look at the log we can determine that the request was served properly by IIS.... Moving on to the next example the 2 numbers are 404 and 2 , where in 404.2 means that the page could not be displayed because "Web service extension lockdown policy prevents this request."
See how easy it becomes once you understand the meaning of the status codes along with the help of sub-status codes!Tip:If you don't get any thing much out of this information. Browse the page with the Show Friendly Http Error Messages unchecked.
Here's a list of status codes and substatus codes along with their meanings. Let me know if I have forgotten any :)
To do that go to IE -> Tools -> Internet Options -> Advanced -> Browsing
Broadly they are classified in this format:Status Code Range Type of Code 100 Informational 200 Successful 300 Redirection 400 Client Error 500 Server Error
Below is the table giving you in detail information:Status Code Sub-Status Code Explanation 100 - Continue 101 - Switching pools 200 OK. The clinet request has succeeded 201 - Created 202 - Accepted 203 - Non-authoritative information 204 - No content 205 - Reset content 206 - Partial content 301 - Permanent Redirect. 302 - Object Moved 304 - Not Modified. 307 - Temporary redirect. 400 - Cannot resolve the request/Bad request. 401 x Unauthorized. 401 1 Access is denied due to invalid credentials. 401 2 Access is denied due to server configuration favoring an alternate authentication method. 401 3 Access is denied due to an ACL set on the requested resource. 401 4 Authorization failed by a filter installed on the Web server. 401 5 Authorization failed by an ISAPI/CGI application. 401 7 Access denied by URL authorization policy on the Web server. 403 x Access is denied. 403 1 Execute access is denied. 403 2 Read access is denied. 403 3 Write access is denied. 403 4 SSL is required to view this resource. 403 5 SSL 128 is required to view this resource. 403 6 IP address of the client has been rejected. 403 7 SSL client certificate is required. 403 8 DNS name of the client is rejected. 403 9 Too many clients are trying to connect to the Web server. 403 10 Web server is configured to deny Execute access. 403 11 Password has been changed. 403 12 Client certificate is denied access by the server certificate mapper. 403 13 Client certificate has been revoked on the Web server. 403 14 Directory listing is denied on the Web server. 403 15 Client access licenses have exceeded limits on the Web server. 403 16 Client certificate is ill-formed or is not trusted by the Web server. 403 17 Client certificate has expired or is not yet valid. 403 18 Cannot execute requested URL in the current application pool. 403 19 Cannot execute CGIs for the client in this application pool. 403 20 Passport logon failed. 404 x File or directory not found. 404 1 Web site not accessible on the requested port. 404 2 Web service extension lockdown policy prevents this request. 404 3 MIME map policy prevents this request. 404 4 No handler was found to serve the request. 404 5 The Request Filtering Module rejected an URL sequence in the request. 404 6 The Request Filtering Module denied the HTTP verb of the request. 404 7 The Request Filtering module rejected the file extension of the request. 404 8 The Request Filtering module rejected a particular URL segment (characters between two slashes). 404 9 IIS rejected to serve a hidden file. 404 10 The Request Filtering module rejected a header that was too long. 404 11 The Request Filtering module rejected a request that was double escaped. 404 12 The Request Filtering module rejected a request that contained high bit characters. 404 13 The Request Filtering module rejected a request that was too long (request + entity body). 404 14 The Request Filtering module rejected a request with a URL that was too long. 404 15 The Request Filtering module rejected a request with a too long query string. 405 - HTTP verb used to access this page is not allowed. 406 - Client browser does not accept the MIME type of the requested page. 407 - Initial proxy authentication required by the Web server. 412 - Precondition set by the client failed when evaluated on the Web server. 413 - Request entity too large. 414 - Request URL is too large and therefore unacceptable on the Web server. 415 - Unsupported media type. 416 - Requested range not satisfiable. 417 - Expectation failed. 423 - Locked error. 500 x Internal server error. 500 11 Application is shutting down on the Web server. 500 12 Application is busy restarting on the Web server. 500 13 Web server is too busy. 500 14 Invalid application configuration on the server. 500 15 Direct requests for Global.asa are not allowed. 500 16 UNC authorization credentials are incorrect. 500 17 URL authorization store cannot be found. 500 18 URL authorization store cannot be opened. 500 100 Internal ASP error. 501 - Header values specify a configuration that is not implemented. 502 - Bad gateway. 503 - Service unavailable. 504 - Gateway timeout. 505 - HTTP version not supported.
Hope this helps! ;)