IIS7 Troubleshooting www.iis.net Reset and Recycle IIS Reset Application Pool Management Error Codes New HTTP Sub-status codes Custom/Detailed Errors Tracing in IIS7 and Longhorn ETW tracing IIS7 Tracing Common Problems and solutions Easier to manage pools with IIS Manger Manage long lists of pools Displays Identity, Framework Version, Type Worker Process information avail in UI Recycle AppPools using: Command Line: appcmd recycle appool “DefaultAppPool” IIS Manager: AppPools Recycle Microsoft.web.adminsitration API See currently running requests: appcmd list requests UI: Worker Process View Current Requests Unload App Domain now possible RFP occurs when pool fails X times in Y minutes (configurable) Prevents continuous attempts to start a very ill process Process will eventually recycle after Y minutes IIS 7 allows a configurable action to occur when RFP kicks in See Application Pool, Advanced Settings #1 of 5 #2 of 5 New sub-status codes added Provides more detail to help quickly identify problems Recorded in IIS logs Combined with detailed errors to give actionable error messages Examples: 404.5 404.15: Denied by Request Filtering (URLScan replacement) 500.21 500.24: ASP.NET integrated pipeline New Verbose errors provides much more information Provided by CustomErrors IIS7 module Suggests Causes and Solutions – often suggests corrective action or lines of inquiry Details include configuration section in question, module in use, page, etc. Verbose errors only delivered to localhost by default #3 of 5 Errors can be customized similar to IIS6 Options are: File: Show a specific file ExecuteRequest : url to a page or program in the same application pool. (url-rewrite, does not involve round trip) New to IIS 7 Redirect : Redirect to a new url (like a URL redirection, with client roundtrip) Replace=All (setting is not in UI) In some cases, a crash or error may not “bubble up” to IIS7 custom error module. This switch ensures IIS7 errors are used Delegation for custom error configuration is off by default Prevents web.config rule to display files on the server when error occurs If you own ALL responses (Replace=All), must handle all scenarios (eg. SOAP 500) In Classic mode, ASP.NET errors are overridden by IIS7 custom errors Error handling differences in classic vs integrated mode Built into the OS Present on Windows Server 2003 Significantly extended in Longhorn ETW providers report into a binary log No UI for configuration Logs can be very large and must be parsed by utility TIP: Logparser is your friend Lack of ability to setup “triggers” #4 of 5 Enable no-repro instrumentation for “failed requests” Turn tracing on, but only keep the events for “failed requests” Allow for custom failure definitions per URL Time taken Status/substatus codes Enable per-URL trace configuration Allow me to define what to trace per URL Example: only trace aspnet events for “*.aspx” Persist failure log files beyond process lifetime Common scenarios: Request takes too long/hangs -> very common today Request error -> request completes, but with error status code Authentication/Authorization problems Server 500 errors IIS 7 Failed Request Events Logs ETW (IIS 6)Trace Data is useful, but difficult to use. Requires utilities to extract and present events from file. IIS 7 provides preformatted XSLT for easy analysis of capture • • Identifying cause of a slow response Determining why a page isn’t cached #5 of 5 Most are not in UI, but can be set in config Log directory maxLogFiles (in UI) maxLogFileSizeKB Run a command when a rule fires: customActionsEnabled customActionExe customActionParams customActionTriggerLimit Create your own errors pages Replace IIS7 error handling module Applications can write events to the IIS 7 tracing system Trigger specific actions when rapid fail protection occurs Custom actions can be configure on specific errors ASP.net pages and WCF can report trace events into trace logs ASP.net application doesn’t’ work in integrated mode: Some settings in web.config may need to be repositioned. Appcmd Migrate will do this automatically Use Classic mode IIS 6 installation scripts don’t work Install IIS Management Compatibility Layer Where do I set Read/Execute permissions for a site? Moved to handler permissions Why doesn’t ASP.net run? Is it installed? Most questions of this sort are caused by the reduce footprint installation IIS Manager improves management and better visibility of runtime environment Error messages are actionable Command line interfaces and APIs for state query, control, and diagnostics Built in tracing helps identify many problems without specialized debuggers Extensibility allows new and customized options © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.