Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

Free Fix HTTP 500.19

HTTP 500.19 on Exchange virtual directories: broken IIS configuration files

10 min read Updated October 5, 2026 Exchange Server

Fix it now

HTTP 500.19 is IIS reporting that the configuration data for that path is invalid. Microsoft’s published description points at the applicationHost.config file or the web.config for the application, so IIS never reached Exchange code at all. Browse the failing URL from the server console, where IIS returns the detailed page naming the file and the entry at fault.

Elevated Command Prompt from C:\Windows\System32\inetsrv. Substitute the failing path

appcmd list config "Default Web Site/owa"
Get-WebAppPoolState MSExchangeOWAAppPool
iisreset /noforce
  1. Browse to the failing URL from the Exchange server’s own console. Locally IIS returns the detailed 500.19 page, which names the configuration file and often the offending line.
  2. Note that file path. It is normally a web.config under the virtual directory, or a file shared by the Exchange Back End site.
  3. Compare it with the same file on a healthy Exchange server running the same build. Do not start editing from memory.
  4. If it was hand-edited, restore the original. If you cannot, recreate the virtual directory with the matching Remove and New cmdlets, which lays down the file Exchange ships.
  5. Run iisreset /noforce and request the path again from the console.

When you recreate an Exchange virtual directory, use the -Role parameter to say whether you mean the Client Access copy on the Default Web Site or the Mailbox copy on Exchange Back End. Recreating the wrong one changes nothing.

If the path answers normally, you are done. If it now fails differently, the next section covers the neighbouring codes and what each one actually means.

Why it happens

Every IIS application reads a merged configuration: the machine-level applicationHost.config first, then each web.config down the path to the application. If any of those cannot be parsed, contains a section the application is not permitted to override, or references a module that is not installed, IIS refuses the request rather than guessing. Microsoft’s published description for 500.19 says exactly that – the problem is in the associated applicationhost.config file or in the associated web.config file.

On an Exchange server those files are written by setup and rewritten during every cumulative update. Anything added by hand – a security header, a rewrite rule, an authentication tweak, the residue of a mitigation script – either survives in a half-merged state or is left pointing at a module that is no longer registered. That is why 500.19 so often appears the morning after an update rather than the morning after the edit.

Two neighbours are worth separating. HTTP 500.24 is published as “An ASP.NET impersonation configuration does not apply in Managed Pipeline mode” – note the wording: the setting is not forbidden, it does not apply, because the application is running in the integrated pipeline. Event ID 5011 is different again: it is a Warning from the Windows Process Activation Service reading “A process serving application pool <name> suffered a fatal communication error with the Windows Process Activation Service”, and Microsoft names it as the indicator of a worker process crash. A crashing pool is not a configuration parse failure and should be chased separately.

The useful property of 500.19 is that IIS is unusually forthcoming about it, but only locally. From a remote browser you get a bare status; from the server console you get the file, the line and the entry. That is one reason to work on the console for this particular error even if you normally do not.

A configuration file was edited and left invalid

You have this one if The detailed page names an XML parse error with a line number, or an attribute value it cannot interpret.

  1. Open the named file and compare it with the same file on a healthy server running the same Exchange build.
  2. Restore the original from backup if you have one, which is faster and safer than editing.
  3. If you do not, recreate the virtual directory so Exchange writes a clean file, then reapply only the customisations you genuinely need.
  4. Run iisreset /noforce and retest from the server console.
Get-OwaVirtualDirectory -Server EX01 | Format-List Identity,InternalUrl,ExternalUrl
Remove-OwaVirtualDirectory -Identity "EX01\owa (Default Web Site)"
New-OwaVirtualDirectory -Server EX01 -Role ClientAccess
Set-OwaVirtualDirectory -Identity "EX01\owa (Default Web Site)" -InternalUrl https://mail.contoso.com/owa
iisreset /noforce

Record the existing URLs and authentication settings before removing anything. The same directory exists again on Exchange Back End and is recreated separately, with -Role Mailbox.

An IIS feature or module the file depends on is missing

You have this one if The error names a section or a module rather than a syntax problem, typically after a rebuild, an image deployment or a partly completed update.

  1. List what is installed: Get-WindowsFeature Web-*, and compare it with the prerequisites Microsoft publishes for your Exchange version.
  2. Install what is missing with Install-WindowsFeature, including the management tools the prerequisites list.
  3. If a cumulative update stopped part way, rerun it in upgrade mode rather than patching the configuration by hand.
  4. Restart IIS and retest.

The section is locked higher up

You have this one if The message says the section cannot be used at this path because it is locked in a parent configuration.

  1. Inspect the machine-level configuration with appcmd list config from C:\Windows\System32\inetsrv and find where the lock is set.
  2. Unlock a section only where Exchange documentation calls for it. Locks exist because a delegated application should not be changing that setting.
  3. If the lock was never yours to change, the real fix is removing the entry from the lower file rather than unlocking the parent.
  4. Retest before assuming the change took effect, because a merged configuration can fail at a different level next.

The application pool identity cannot read the file

You have this one if The detailed page reports access denied on the configuration file rather than a parse error.

  1. Compare the NTFS permissions on the file and its folder with the equivalent on a healthy server.
  2. Restore the missing read access for the application pool identity and the IIS users group.
  3. Do not grant broad access to make it go away. An Exchange server with loosened permissions on its web tree is a worse problem than a 500.19.
  4. Restart the application pool and retest.

Full reference

Reading the detailed page before changing anything

What the detailed page says What to do about it
A parse error with a file and line number Malformed XML or an invalid value at that line
A section cannot be used because it is locked The section is locked higher up in applicationHost.config
An unrecognised section or module name An IIS feature or module the file depends on is not installed
Access is denied reading the file NTFS permissions on the configuration file
HTTP 500.24 instead An ASP.NET impersonation configuration that does not apply in managed pipeline mode
Event ID 5011 in the System log The worker process is crashing. Not a configuration parse failure

Recreating an Exchange virtual directory properly

The cmdlets follow one pattern across the virtual directories: a Get to record what is there, a Remove, a New to lay down what Exchange ships, and a Set to put your URLs back. The parameter that people miss is -Role, which takes ClientAccess or Mailbox and decides whether you are creating the front end copy on the Default Web Site or the back end copy on Exchange Back End. Both exist for OWA, ECP, ActiveSync, EWS, MAPI, OAB, PowerShell and Autodiscover, and they are configured differently on purpose.

Directory Cmdlet family
Outlook on the web Get- / Remove- / New- / Set-OwaVirtualDirectory
Admin centre ...EcpVirtualDirectory
ActiveSync ...ActiveSyncVirtualDirectory
Web services ...WebServicesVirtualDirectory
MAPI over HTTP ...MapiVirtualDirectory
Offline address book ...OabVirtualDirectory
Remote PowerShell ...PowerShellVirtualDirectory
Autodiscover ...AutodiscoverVirtualDirectory

Hand-editing IIS configuration on an Exchange server is how most of these faults are created in the first place. Prefer restoring or recreating over editing, and take a copy of any file before you change it.

When the pool is crashing rather than the configuration failing

Event ID 5011 changes the investigation completely. Microsoft’s IIS troubleshooting guidance identifies it as the System log record of a worker process crash, carrying the application pool name and the process id, with the error number in the data field. The configuration parsed; the process died afterwards. Chasing web.config at that point wastes the window.

  • Check whether the pool is in rapid-fail protection, which stops it after repeated crashes and produces 503 rather than 500.19 for subsequent requests.
  • Look for an Application Error entry naming the faulting module at the same timestamp.
  • Check whether a third-party filter, agent or inspection product is loaded into the worker process.
  • Fix the crash rather than raising the rapid-fail limits, which only hides how often it happens.

Keeping this from recurring at the next update

  • Keep a written record of every deliberate change to an Exchange IIS configuration file, with the reason and the date. A cumulative update overwrites them, and the record is what tells you which ones to put back.
  • Prefer settings applied through Exchange cmdlets over settings applied in IIS Manager, because the cmdlets survive a directory being recreated in a way that hand edits do not.
  • Take a copy of the web.config tree before a cumulative update, so a comparison afterwards takes minutes.
  • Check the prerequisites list against the installed Windows features after any server rebuild, before the first CU rather than during it.

Every code this article covers

Code What it points at Source
HTTP 500.19 Configuration data is invalid: a problem in the associated applicationHost.config or web.config file for that path Microsoft Learn
HTTP 500.24 An ASP.NET impersonation configuration does not apply in managed pipeline mode Microsoft Learn
Event ID 5011 Windows Process Activation Service warning: a process serving the named application pool suffered a fatal communication error with WAS. Microsoft identifies it as the marker of a worker process crash Microsoft Learn

Confirm the fix worked

  1. The previously failing URL returns a normal response when browsed from the server console.
  2. appcmd list config for that path returns without a configuration error.
  3. The relevant application pool is started and is still started an hour later.
  4. No new Event ID 5011 entries appear in the System log, which would mean the pool is now dying for a different reason.
  5. The URLs and authentication settings you recorded before recreating the directory are back in place.

Questions people ask about this

Does this cost anything to resolve?

No. It is a configuration fault on a server you already license, and the recreation cmdlets are part of Exchange. Nothing on this page is fixed by a purchase.

Can I copy a web.config from another Exchange server?

Only from a server on exactly the same Exchange build with the same roles, and only as a stopgap. Recreating the virtual directory is safer because it produces the file that build expects rather than one that happened to work elsewhere.

Why did a cumulative update cause this?

Because a CU rewrites the shipped configuration files. Local edits get overwritten, merged awkwardly, or left referring to modules the new build no longer registers. Keeping a record of every deliberate change makes updates far less eventful.

What is the difference between 500.19 and 500.24?

500.19 means the configuration could not be read or applied at all. 500.24 is narrower: an ASP.NET impersonation configuration is present that does not apply in managed pipeline mode. The first is a parse or merge failure, the second is a specific setting in the wrong place.

Is recreating a virtual directory risky on a live server?

It is quick but disruptive: the settings are discarded and IIS is restarted, so clients reconnect. Record the settings first, do it in a change window, use the -Role parameter to target the right copy, and put your customisations back immediately.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

Free Fix Event ID 41 in MSExchange OWA: something went wrong loading OWA or ECP License Error StorageTransientException: the mailbox is busy or over quota during a move Free Fix Error 1618 and a half finished Exchange CU: setup will not start again License Error Event ID 226 and Event ID 9519: an Exchange database will not start
โ† Back to Knowledge Base