Я использую предопределенный wsdl с svcutil a la:
svcutil some_service.wsdl
один из генерируемых методов имеет следующую подпись:
[System.ServiceModel.OperationContractAttribute(Action="http://ws.example.org/SubmitData", ReplyAction="*")]
SubmitDataResponse SubmitData( SubmitDataRequest request )
В то время как scvutil из VS2010/.net35 генерирует только вышеописанное, и VS не имеет проблем с lanuching службой, программа svcutil, которая является частью VS2012/.net45, также генерирует метод с сигнатурой
[System.ServiceModel.OperationContractAttribute(Action="http://ws.example.org/SubmitData", ReplyAction="*")]
Task<SubmitDataResponse> SubmitDataAsync( SubmitDataRequest request );
Это приводит к исключению во время выполнения:
System.InvalidOperationException: не может иметь две операции в один и тот же контракт с тем же именем, методы SubmitDataAsync и SubmitData в типе MyType нарушает это правило. Вы можете изменить название одной из операций, изменив имя метода или используя Имя свойства OperationContractAttribute.
Я могу обойти это, удалив приложенные методы Async или просто используя svcutil из VS2010. Но мне интересно, почему svcutil создает интерфейс, который вызывает исключение во время выполнения (это ошибка?), И есть ли что-то дополнительное, что я должен сделать, чтобы заставить его работать.