The error message indicate that the error is raised by ContractFilter, therefore I think we need to verify whether the Contract type( ServiceContract type) used at client and service sides matchs with each other. Based on your code, the Contract type is "IEDIServiceChannel"
ChannelFactory<ServiceChannel> cf =
new ChannelFactory<IEDIServiceChannel>(binding, epa);
Also, for testing, suggest you use "Add ServiceRefernce" to generate a proxy class and call
the service to see whether it works. If so works, you can compare the generated proxy code(and Contract type) with the one you currently used to find any difference.