webservice references
You know why my web service was returning a string last time? Because I hadn't deleted the reference and added it again. Oh lord, the lost time figuring that one out.
The other big curveball was I had to return an XmlNode in the first place in order to make InfoPath happy. Of course I haven't checked to make sure InfoPath is happy yet, but I have a web service that returns an XmlNode and we can read and write to the file that the service manages.
The other thing not to forget is when you're looking for that streamreader and streamwriter code, don't ignore the flush and close options. I know it's gross, but if it's in there from the beginning you won't have to reboot to debug it later.