{"id":836,"date":"2026-10-05T03:11:32","date_gmt":"2026-10-05T03:11:32","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=836"},"modified":"2026-10-05T03:11:32","modified_gmt":"2026-10-05T03:11:32","slug":"troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/","title":{"rendered":"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing"},"content":{"rendered":"<div style=\"padding:20px\">\n\n\n<p class=\"wp-block-paragraph\">&#8220;HTTP Error 500.30 \u2013 ANCM In-Process Start Failure.&#8221; &#8220;HTTP Error 502.5 \u2013 Process Failure.&#8221; If you host .NET or ASP.NET Core apps on IIS, you have seen one of these and spent an hour guessing. The good news: IIS has a built-in diagnostic that tells you exactly what happened during startup \u2014 <strong>Failed Request Tracing (FRT)<\/strong> \u2014 and once you know how to read it, startup failures stop being mysteries.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This walkthrough assumes a working IIS install; if you are still bringing the server up, the <a href=\"https:\/\/windows-vps.org\/\">Windows VPS setup guides<\/a> on the main site cover IIS installation and .NET hosting prerequisites end to end.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Understand Where Startup Fails<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>ANCM In-Process<\/strong> \u2014 the app runs inside <code>w3wp.exe<\/code>; a startup exception produces 500.30.<\/li><li><strong>ANCM Out-of-Process<\/strong> \u2014 the app runs in a separate <code>dotnet.exe<\/code>; a crash to start produces 502.5.<\/li><li><strong>Classic ASP.NET (Framework 4.8)<\/strong> \u2014 a startup error usually surfaces as 500 with details suppressed by <code>customErrors<\/code>.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">2. Read the Windows Event Log First<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before FRT, the fastest signal is the Application log. ANCM writes detailed errors there:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Get-WinEvent -LogName Application -MaxEvents 50 | Where-Object { $_.ProviderName -like '*IIS*' -or $_.Message -like '*ANCM*' } | Format-List TimeCreated,ProviderName,Message<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common messages: &#8220;The application failed to start&#8221; (missing runtime), &#8220;Failed to bind to address&#8221; (port conflict), or an unhandled exception with a stack trace (code\/config issue).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Enable Failed Request Tracing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">FRT is installed as an IIS feature. Enable it per site in <strong>IIS Manager \u2192 [site] \u2192 Failed Request Tracing \u2192 Edit Site Tracing \u2192 Enable<\/strong>. Set the directory (e.g. <code>C:\\inetpub\\logs\\FailedReqLogFiles<\/code>) and a maximum number of trace files.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then add a rule to capture 500-range statuses. In <strong>Failed Request Tracing Rules \u2192 Add Rule<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Trace: <em>All content<\/em> (or a specific path like <code>*.aspx<\/code> \/ <code>*.dll<\/code>).<\/li><li>Condition: <em>Status code<\/em> equals <em>500<\/em> (add 502, 503 separately if needed).<\/li><li>Providers: leave all selected; the <code>ASPNET<\/code>, <code>WWW Server<\/code>, and <code>ANCM<\/code> providers carry the interesting events.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. Enable ASP.NET Core Module stdout Logging<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For .NET Core apps, ANCM can capture the app&#8217;s own stdout to a file \u2014 this is the single most useful diagnostic. Edit the site&#8217;s <code>web.config<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;aspNetCore processPath=\"dotnet\" arguments=\".\\MyApp.dll\" stdoutLogEnabled=\"true\" stdoutLogFile=\".\\logs\\stdout\" hostingModel=\"inprocess\" \/&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create the <code>logs<\/code> directory first \u2014 ANCM will not create it for you, and a missing folder is itself a frequent cause of &#8220;nothing in the log.&#8221; <code>New-Item -ItemType Directory C:\\inetpub\\wwwroot\\logs -Force<\/code>. Then reproduce the failure and read the newest file:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Get-ChildItem C:\\inetpub\\wwwroot\\logs | Sort LastWriteTime -Desc | Select -First 1 | Get-Content<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Common Root Causes and Fixes<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Symptom<\/th><th>Likely cause<\/th><th>Fix<\/th><\/tr><\/thead><tbody><tr><td>500.30<\/td><td>.NET runtime missing<\/td><td>Install the matching ASP.NET Core Hosting Bundle, then <code>net stop was \/y &amp;&amp; net start w3svc<\/code><\/td><\/tr><tr><td>502.5<\/td><td>App throws on startup<\/td><td>Read stdout log; fix config\/DB connection<\/td><\/tr><tr><td>App pool crashes instantly<\/td><td>32-bit mismatch<\/td><td>Set <code>enable32BitAppOnWin64<\/code> correctly<\/td><\/tr><tr><td>500.19<\/td><td>Config section locked<\/td><td>Unlock via <code>appcmd unlock config<\/code><\/td><\/tr><tr><td>Permissions<\/td><td>App pool identity lacks rights<\/td><td>Grant <code>IIS AppPool\\MyPool<\/code> read to the folder<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Grant folder permissions over PowerShell:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>icacls C:\\inetpub\\wwwroot \/grant \"IIS AppPool\\MyAppPool:(OI)(CI)(RX)\" \/T<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Analyze the FRT Log<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open the newest <code>fr*.xml<\/code> in the tracing directory in a browser. Walk the timeline: the <code>GENERAL_REQUEST_START<\/code>, then <code>MODULE_SET_RESPONSE_ERROR_STATUS<\/code>, then the ASPNET\/ANCM notifications. The last event before the failure names the module or exception. Look for the <code>ErrorCode<\/code> and the <code>Notification<\/code> where the request died \u2014 that is your culprit line.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Failure during <em>Execute Request Handler<\/em> \u2192 application-level exception, read stdout log.<\/li><li>Failure during <em>Authenticate Request<\/em> \u2192 auth module \/ config or identity permissions.<\/li><li>Failure at module load \u2192 missing native dependency or bitness mismatch.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Turn Tracing Off When Done<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">FRT writes a file per failed request and can fill a disk fast under attack. Disable it once resolved: <strong>Failed Request Tracing \u2192 Disable<\/strong>. Also set <code>stdoutLogEnabled=\"false\"<\/code> again \u2014 leaving stdout logging on in production is a slow disk-space leak.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pair this with a host that gives you clean logs and fast disk \u2014 the <a href=\"https:\/\/windows-vps.org\/#providers\">Windows VPS comparison<\/a> lists options. And if you want a quick box to practice on, <a href=\"https:\/\/interserver.net\/r\/1067805?url=interserver.net\/vps\/windows-vps.html\" rel=\"noreferrer noopener sponsored\" target=\"_blank\">InterServer Windows VPS<\/a> is a practical place to start (promo code <strong>TRYINTERSERVER<\/strong>).<\/p>\n\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;HTTP Error 500.30 \u2013 ANCM In-Process Start Failure.&#8221; &#8220;HTTP Error 502.5 \u2013 Process Failure.&#8221; If you host .NET or ASP.NET Core apps on IIS, you have seen one of these and spent an hour guessing. The good news: IIS has a built-in diagnostic that tells you exactly what happened during startup \u2014 Failed Request Tracing &#8230; <a title=\"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing\" class=\"read-more\" href=\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/\" aria-label=\"Read more about Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":2,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-836","post","type-post","status-publish","format-standard","hentry","category-reviews"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing - Windows VPS Blog<\/title>\n<meta name=\"description\" content=\"&quot;HTTP Error 500.30 \u2013 ANCM In-Process Start Failure.&quot; &quot;HTTP Error 502.5 \u2013 Process Failure.&quot; If you host .NET or ASP.NET Core apps on IIS, you have seen one\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing\" \/>\n<meta property=\"og:description\" content=\"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-05T03:11:32+00:00\" \/>\n<meta name=\"author\" content=\"windows-vps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@myxiechengxuan\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"windows-vps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/\",\"name\":\"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-10-05T03:11:32+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"description\":\"\\\"HTTP Error 500.30 \u2013 ANCM In-Process Start Failure.\\\" \\\"HTTP Error 502.5 \u2013 Process Failure.\\\" If you host .NET or ASP.NET Core apps on IIS, you have seen one\",\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\",\"url\":\"https:\/\/windows-vps.org\/blog\/\",\"name\":\"Windows VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/windows-vps.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\",\"name\":\"windows-vps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"caption\":\"windows-vps\"},\"sameAs\":[\"https:\/\/windows-vps.org\/blog\",\"https:\/\/x.com\/myxiechengxuan\"],\"url\":\"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing - Windows VPS Blog","description":"\"HTTP Error 500.30 \u2013 ANCM In-Process Start Failure.\" \"HTTP Error 502.5 \u2013 Process Failure.\" If you host .NET or ASP.NET Core apps on IIS, you have seen one","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/","og_locale":"en_US","og_type":"article","og_title":"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing","og_description":"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing","og_url":"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-10-05T03:11:32+00:00","author":"windows-vps","twitter_card":"summary_large_image","twitter_creator":"@myxiechengxuan","twitter_misc":{"Written by":"windows-vps","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/","url":"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/","name":"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-10-05T03:11:32+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"description":"\"HTTP Error 500.30 \u2013 ANCM In-Process Start Failure.\" \"HTTP Error 502.5 \u2013 Process Failure.\" If you host .NET or ASP.NET Core apps on IIS, you have seen one","breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/troubleshoot-dotnet-iis-startup-500-30-failed-request-tracing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Troubleshooting .NET Application Startup Failures in IIS with Failed Request Tracing"}]},{"@type":"WebSite","@id":"https:\/\/windows-vps.org\/blog\/#website","url":"https:\/\/windows-vps.org\/blog\/","name":"Windows VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/windows-vps.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58","name":"windows-vps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","caption":"windows-vps"},"sameAs":["https:\/\/windows-vps.org\/blog","https:\/\/x.com\/myxiechengxuan"],"url":"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/"}]}},"_links":{"self":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/comments?post=836"}],"version-history":[{"count":1,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/836\/revisions"}],"predecessor-version":[{"id":837,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/836\/revisions\/837"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}