Exchange 2007 OWAAppPool crash on Windows 2008

Over the past week or so we've had several cases pop up where the Exchange 2007 OWAAppPool is crashing. After looking over a few of these cases we found one thing they had in common, they were all running on Windows 2008.

A little debugging and we found the culprit. We were receiving an HTTP response that we didn't recognize. That causes an exception and crashes the application pool. That response was a redirect. So, how does a redirect response crash the application pool?

Let's review our current documentation on TechNet:

How to Simplify the Outlook Web Access URL
https://technet.microsoft.com/en-us/library/aa998359.aspx

You have the option to set our response to a file or a URL.

image

Using the URL redirect works fine for a relative URL to the site root, this doesn't help much if you want to also redirect from HTTP to HTTPS. So, most configurations use the FILE option for the redirect.image
Now, this works great with Exchange 2007 running on Windows 2003\IIS6.
Just as outlined in the TechNet article, the file can then handle the redirect to HTTPS, But the response code is still "FILE".

What happens when you install Exchange 2007 SP1 on Windows 2008?
Welcome to IIS7.

image

IIS7 has a new feature that was not present in IIS6 and thus was not present when Exchange 2007 was released.
We know Exchange 2007 was clearly designed with IIS6 in mind. Just note the message when installing on a straight IIS7 install:

Unable to read data from the Metabase. Ensure that Microsoft Internet Information Services is installed.
The 'IIS 6 Metabase Compatibility' component is not installed. Install the
component via Server Manager.

That feature is the Redirect response. This will allow an absolute URL as opposed to a relative URL like IIS6. The response code here is REDIRECT, not FILE or URL.

image

As stated before, REDIRECT is not a response type we expect. We check for FILE and URL. So, when we receive REDIRECT, we fail our test case and force an exception, thinking something bad must have happened.

You can also find this in the ApplicationHost.config file:
C:\windows\System32\inetsrv\config\applicationHost.config

<httpErrors>
    <error statusCode="403" subStatusCode="4" path="C:\inetpub\SSLredirection.html" responseMode="File" />
</httpErrors>

<httpErrors>
    <error statusCode="403" subStatusCode="4" path=https://WEBMAIL.TAILSPINTOYS.COM /OWA responseMode="Redirect" />
</httpErrors>

If you are using this feature, anytime someone\something attempts to access the "/exchange" virtual directory we will crash the OWAAppPool. This could either be in DAVEX or EXPROX depending on if you CAS server has only the CAS role installed or CAS and MBX installed together.

Log Name: Application
Source: Application Error
Date: 8/28/2008 2:17:37 AM
Event ID: 1000
Task Category: (100)
Level: Error
Keywords: Classic
User: N/A
Computer: WEBMAIL.TAILSPINTOYS.COM
Description:
Faulting application w3wp.exe, version 7.0.6001.18000, time stamp 0x47919ed8, faulting module davex.dll, version 8.1.240.5, time stamp 0x47427a90, exception code 0xc0000005, fault offset 0x00000000000d3ac1, process id 0x1078, application start time 0x01c908d5c27835da.

Our current solution is to continue using the same practice outlined in the TechNet article for IIS6 by setting a FILE response and let that handle the redirect for you.

Thanks to Brad Hughes for helping me track this down.
Check out his blog as well.
https://blogs.msdn.com/brad_hughes/

Update:
RU5 for Exchange 2007 SP1 includes an update to enabled the use of this new feature in IIS.
With RU5 installed you can now use the "REDIRECT" option of IIS7 instead of the more complex FILE option to redirect users to an absolute URL.

Description of Update Rollup 5 for Exchange Server 2007 Service Pack 1
https://support.microsoft.com/?kbid=953467

Update Rollup 5 for Exchange Server 2007 Service Pack 1 (KB953467)
https://www.microsoft.com/downloads/details.aspx?FamilyId=652ED33A-11A1-459C-8FFE-90B9CBFE7903&displaylang=en