As far as I know, the only way to preserve the original stack information is to use the 'throw' statement by itself in a catch block, any other use of the throw statement, i.e. throw new XXXException() will figure as though the exception occurred at the location of the throw statement in code.
However, i think you can achieve what you need, because you do have the original exception in the ExceptionList.
Try something like this:
foreach ( Exception exc in result.ExceptionList.Values )
{
string message = string.Format ( "Exception rethrown {0}.", exc.ToString() );
throw new Exception ( message, exc );
}
This should preserve the original Exception, with all its info.
"Small is the number of them that see with their own eyes, and feel with their own hearts" Albert Einstein