Archive for the ‘IIS’ Category
Problem: Access to path was denied when a dotnet app was writing an excel file to a folder of the website.
Solution: Grant access to the “Network Service” account to the folder that has permissions issue.
Some time back I was using windows XP Pro for development at work. One thing that I was unable to figure out was to create one website per project with in IIS. The answer to this is that there isn’t a way to accomplish this using the IIS Management Console. I did some searching on the web and found a couple of awesome free tools that serves the purpose.
XP PRO IIS Admin  and IISAdmin.Net  are of tremendous help with setting up and allowing you to easily add new websites, and switch between them. One thing to keep in mind is that we can only have one active website at a time. I wonder why microsoft left out on this feature from the IIS mmc.
1. IIsAdmin.NET: Create Multiple Web Sites Under Windows XP by Mark Belles, Gabe Wishnie
2. XP Pro IIS Admin by JetStat
Web application slowness in different environments in a software factory-line is something that we all must have come-across at some point or the other. Here is my perspective on “where to begin” to address this issue in a general sense for a Microsoft centric web application. Let as assume that our application was developed using ASP.Net and a SQL Server database.
1. Go though the Event Viewer log for any errors, warnings and informational messages. Watch out for messages that were logged by your application and another other applications on your web server.
2. Check the IIS logs to see if there is any unusual response rate i.e. errors (http 500, 404, etc).
3. The application pool in IIS can be a source of the slowness of the application.
4. The web server could have ran out of disk space (lack of error log rolling and backup service).
5. IIS crash because of a memory leak, thread locking, etc. Check out Troubleshooting an IIS Crash/Hang
7. Make sure that the web server is up-to-date with all the latest “software patches” 😉 (oops !!! service packs)
8. Make sure that the database connection pool settings are correct.
9. Consider rendering the website content using a content delivery network (CDN) service provider like Akamai, Amazon CloudFront, Microsoft Azure, AT&T, etc.
10. If none of the above seems to cause an issue then read-on.
1. Analyzing the web request and the web response across multiple pages of the application using tools like Charles, Fiddler, Firebug, etc can provide you lot of information that you would not know otherwise.
2. Narrow down the scope of the slowness in the page execution.
3. Not disposing objects after use can eat up lot of resources on the web server causing the slowness.
4. Make sure that the response times of all the Ajax, web service calls are in line with the expectations.
5. Run extended load tests to determine if there might be a new cause of failure, that might not have been noticed during regular load tests.
6. Always employ best practices for implementing web site acceleration .
7. Consider fetching multiple result sets in one database call as opposed to one result set per database call. This will reduce the number of round trips to the database.
8. If none of the above seems to cause an issue then read-on.
1. Low disk space on the SQL Server/Cluster.
2. Not following SQL Server best practices.
3. Go though the execution plans of the various suspect SQL scripts/statements to isolate the issue. Table scan can be a very costly operation as opposed to a index scan.
4. Run a SQL Trace for a few hours in an environment with lot of traffic and feed the trace file to the SQL Server Performance Tuning wizard.
5. Apply the recommendations of the SQL Server Performance Tuning wizard to the database to see if that helps.
6. Verify and make sure that the background SQL, SSIS and SSRS tasks are scheduled to run during off-peak hours.
7. Considering breaking down a huge database into smaller ones. as an example an e-commerce website should be accessing data from a Catalog, Marketing, Sales and Audit databases instead of one big database.
8. Consider regular archiving and cleanup of historical data from all databases.
9. Index defragmenting  can improve the SQL execution times too.
10. Sorting of huge record sets might be best left to he done at the application level than at the database level. This could be controversial depending on who you speak to. With this kind of a solution chances are that a modern day beefed-up web server in a web farm(load balanced environment) should be able to handle expensive data operations. This would conserve SQL Server processing time to handle more requests.
11. I hope your issue might have been resolved by now.
I will update this blog, as and when I can think of other ways to help the cause.
Good luck and happy programing !
Also find this post on CodeProject
One of the vulnerability that we had to fix on a recent project was the disclosure of the IP address when IIS had to redirect a web request to another page and here is how it got fixed.
Based on the following Microsoft support article: “FIX: IP address is revealed in the content-location field in the TCP header in IIS 6.0” ; follow these steps to set the SetHostName property in IIS, so that the System Admin defined hostname is revealed in the response header as opposed to the internal IP address..
- Click Start, click Run, type cmd, and then click OK to open a command prompt.
- Change to the folder where the Adsutil.vbs tool is located. By default, this folder is the following:
- Type the following command, where x is your site identifier and hostname is the alternate host name that you want to use:
- cscript adsutil.vbs set w3svc/x/SetHostName hostname
- X can be looked by from IIS mmc. Click here  to know to look up the site identifier.
If this does not fix the problem then try installing the latest service pack for Windows Server 2003 and then restart your computer
- Microsoft Support: FIX: IP address is revealed in the content-location field in the TCP header in IIS 6.0
- Chris Crowe’s Blog – IIS Web Site Identifiers.
A while ago I have posted a blog on Troubleshooting an IIS Crash/Hang, where I have mentioned that we can use a tool called Windbg to analyze the dump file that is extracted when an IIS crash occurs. I have found the following some excellent tutorials for learning about how to use Windbg for troubleshooting with IIS and other issues. Following are some of those useful resources
- Getting started with windbg – part I
- Getting started with WinDbg – Part II
- Using WinDbg – Hunting Exceptions
- WinDbg + SOS Cheat Sheet
On one of the Win XP Professional machines IIS was throwing an Internal Server Error. When I checked the Event Viewer, there was a “Class not Registered” error and following was the content of the event:
Event Type: Warning
Event Source: W3SVC
Event Category: None
Event ID: 36
Description: The server failed to load application ‘/LM/W3SVC/1/ROOT. The error was ‘Class not registered’.
Bare bones: ASP and ASPX pages were not being recognised and http 500 error was returned to the browser.
I was able to google my way to the fix on Bernard’s MSMVP blog and God it made my day. Here is the working solution, its not my solution but I felt the need to document it and to share.
I was able to fix this issue following these steps:
1) Open Command Prompt and type “cd \windows\system32\inetsrv”
2) Run “msdtc -resetlog”
3) Run “rundll32 wamreg.dll, CreateIISPackage”
4) Run “regsvr32 asptxn.dll”
5) Run “iisreset”
1. The famous ‘Class not registered’ – Bernard’s MSMVP Blog