Unlike interface faults, no binding operation level <infault> and <outfault> constructs are provided in the LC draft. I don't recall and can not trace discussion on the rationale for such in-symmetric desgin from the mail archival. Since Faults have been changed so many times, I would like to make sure we still have a common understanding about how it should work and that no problem are introduced here.
Without corresponding <infault>/<outfault> in the binding level, here is how I see it works:
1. How can one figure out which fault an binding operation uses?
This seems do-able without binding level <infault>/<outfault>. Since a binding operation refers to an interface operation, one should be able to get the fault message reference from the interface operation, and then look up the binding <fault> corresponding to the interface <fault> to figure out. It's do-able, but convoluted.
2. How can one specify a different fault code, soap module, and maybe custom binding extensions for infault and outfault of an binding operation?
This is also do-able, but again cumbersome - one has to define different interface <fault>s for infault and outfault even if they share a same fault message.
If this correctly reflects the group's thinking, I will add some text in the primer accordingly.
Best Regards,
Kevin