This is a breaking change in the 5.1.0 release. After deploying this update to our IIS 7.0 server with .NET 4.5.1 installed, each request handled by WebAPI seems to fail with the following:
__PlatformNotSupportedException: This operation requires IIS version 7.5 or higher running in integrated pipeline mode.__
```
System.Web.HttpResponse.get_ClientDisconnectedToken() +5177174
System.Web.Http.WebHost.HttpResponseBaseExtensions.GetClientDisconnectedTokenWhenFixed(HttpResponseBase response) +60
System.Web.Http.WebHost.<ProcessRequestAsyncCore>d__0.MoveNext() +218
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +144
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +84
System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar) +98
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
```
The culprit is [HttpResponseBaseExtensions.GetClientDisconnectedTokenWhenFixed()](https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Http.WebHost/HttpResponseBaseExtensions.cs) where apparently the condition being tested ("is .NET 4.5.1 or higher") is not strong enough.
__PlatformNotSupportedException: This operation requires IIS version 7.5 or higher running in integrated pipeline mode.__
```
System.Web.HttpResponse.get_ClientDisconnectedToken() +5177174
System.Web.Http.WebHost.HttpResponseBaseExtensions.GetClientDisconnectedTokenWhenFixed(HttpResponseBase response) +60
System.Web.Http.WebHost.<ProcessRequestAsyncCore>d__0.MoveNext() +218
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +144
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +84
System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar) +98
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
```
The culprit is [HttpResponseBaseExtensions.GetClientDisconnectedTokenWhenFixed()](https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Http.WebHost/HttpResponseBaseExtensions.cs) where apparently the condition being tested ("is .NET 4.5.1 or higher") is not strong enough.