The problem with the approach you're taking is that you will have to have all of the imported objects in memory. This is because the webservice request immediately acts as the input parameter to the microflow.
Judging by your question, this is not what you want. You probably just want to import the data really quickly.
In that case, I'd suggest turning it around. Have the C# app publish a webservice that returns the objects. The runtime is really good at importing data from a published webservice, and will flush data to the DB as quickly as possible. This prevents the situation where you need to keep 400k objects in memory.
YOU ARE A LEGEND MY FRIEND!!!!
THANK YOU!!!!
:)