In general, the error "I/O error occurred" occurs when a firewall is configured to close connection after a certain period of inactivity.
If I face this issue, I would enable the "connection eviction" thread of that data source by following the steps provided in the [Recommended connection pool configuration settings for firewall enabled environments](https://community.denodo.com/docs/html/browse/latest/en//vdp/vql/generating_wrappers_and_data_sources/creating_data_sources/jdbc_data_sources#recommended-settings-of-the-connection-pool-in-environments-with-a-firewall) section of Virtual DataPort VQL Guide. By doing this, the connection pool will periodically execute the validation query, which will maintain the connections alive.
For more information on accessing Virtual DataPort Server through ADO.Net, you could refer to the [Access Through an ADO.NET Data Provider](https://community.denodo.com/docs/html/browse/8.0/en//vdp/developer/access_through_an_ado.net_data_provider/access_through_an_ado.net_data_provider#access-through-an-ado-net-data-provider) section of Virtual DataPort Developer Guide.
Hope this helps!