This may occur for following reasons:
1.) SQL server will hang up on you if you exceed the agreed upon timeout between requests.
2.) If you are non-local, the connection may be broken and might need to be re-established.
3.) You may not have successfully connected the first time (maximum number of connections exceeded).
The utility of this exception is that it gives you the opportunity to handle these cases cleanly.
Catch the exception, and then reopen the connection if this happens. If the reopen fails -- your network is down or the server is ignoring you. If the server is ignoring you and you know that you are the only process that should be accessing the server, look for connection leaks to make sure that you aren't leaking connections.
I hope this helps. Also see below links for more reference:
http://www.daniweb.com/software-development/csharp/threads/239216/executereader-requires-an-open-and-available-connection.-the-connections-current-sta[
^]
http://stackoverflow.com/questions/839014/executereader-requires-an-open-and-available-connection-the-connections-curren[
^]
http://forums.asp.net/t/1069710.aspx/1[
^]