Troubleshooting FIM: HTTP client has prematurely closed the underlying TCP connection

ISSUE

A general search for users within the FIM Portal throws a "cannot process request" error at around 2 minutes. Advanced searches seemed to work albeit rather slowly.

Through analyzing the FIM Service trace we see the following error:

<Exception><ExceptionType>System.ServiceModel.CommunicationException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>The specified network name is no longer available. This often indicates that the HTTP client has prematurely closed the underlying TCP connection.</Message> ...

CAUSE

This message was thrown after extending the SQL read/write and ResourceManagementClient timeouts per http://blogs.msdn.com/b/darrylru/archive/2010/02/02/extending-fim-timeouts.aspx. By default, the Portal execution timeout unspecified in c:\inutpub\wwwroot\wss\virtualdirectories\80\web.config is ~110 - 120 seconds, which is longer than default SQL timeouts. Once the SQL timeouts are extended, we hit the timeout value for the FIM Portal - even though SQL was working to successfully process the request.

SOLUTION

Specifically extending the execution timeout in the httpruntime section at the bottom of web.config file allowed the slow search to complete successfully.

<httpRuntime maxRequestLength="51200" executionTimeout="300" />

This executionTimeout is written in the linked blog as a bonus but may be necessary when searches or similar requests time out before the extended SQL timeouts.

ADDITIONAL INFORMATION

The default timeouts in the web.config file should be sufficient for most cases. For environments that accumulate a large number of requests per day, the extension of the timeout may be necessary. It is equally important to ensure expired requests are being deleted by the FIM_DeleteExpiredSystemObjectsJob in SQL. By default, expired requests are requests created prior to 30 days ago.

See Managing SQL Server Agent Jobs in FIM 2010 for more information about configuring object retention and removing expired requests.

http://technet.microsoft.com/en-us/library/ff830030(v=ws.10).aspx