У меня есть сервис WCF, я создал ссылку на него из проекта MSTest. Вот пример того, как я вызываю сервисные методы:
IEnrollmentService serviceClient = ChannelFactory<IEnrollmentService>
.CreateChannel(new BasicHttpBinding(),
new EndpointAddress("http://localhost/EnrollmentService.svc"));
PublishResult res = serviceClient.PublishEnrollmentProfile(...);
Вместо выполнения я получил следующую ошибку:
Тип контента application / xml;
charset = utf-8 ответного сообщения
не соответствует типу содержимого
привязка (text / xml; charset = utf-8). Если
используя собственный кодировщик, убедитесь, что
метод IsContentTypeSupported
реализовано правильно. Первый 710
байт ответа были: 'Sendera:ActionNotSupported
Сообщение с
Действие '' не может быть обработано на
получатель, из-за ContractFilter
несоответствие в EndpointDispatcher.
Это может быть из-за
несоответствие контракта (несоответствующие действия
между отправителем и получателем) или
несоответствие привязки / безопасности между
отправитель и получатель. Проверь это
отправитель и получатель имеют одинаковые
договор и та же обязательная
(включая требования безопасности, например,
Сообщение, Транспорт,
Никто).'. --->
System.Net.WebException: удаленный
сервер вернул ошибку: (500)
Внутренняя ошибка сервера ..
Насколько я понял, между ContractFilter и EndpointDispatcher есть некоторые проблемы. Я пытался успокоиться, но ничего не понял ...
Я также пытался вызывать методы службы wcf по-другому:
EnrollmentServiceClient serviceClient = new EnrollmentServiceClient("http://localhost/EnrollmentService.svc");
PublishResult res = serviceClient.PublishEnrollmentProfile(...);
Это возвращает мне еще одну ошибку:
Не удалось найти элемент конечной точки с
название
«http://localhost/McActivation/EnrollmentService.svc'
и контракт
'EnrollmentServiceReference.IEnrollmentService'
в клиенте ServiceModel
раздел конфигурации. Это может быть
потому что файл конфигурации не был
найден для вашего приложения, или потому что
нет элемента конечной точки, соответствующего этому имени
можно найти в клиентском элементе ..
Question1:
Как правильно создать экземпляр клиента службы wcf?
Questions2:
Что не так в моем случае?
Большое спасибо.
P.S. С некоторыми проблемами я могу подключиться к сервису с помощью WcfTestClient, более подробная информация здесь:
Служба WCF: невозможно вызвать методы через конечную точку 'WebHttpBinding'
P.P.S. Вот конфигурация службы WCF на стороне сервера:
<system.serviceModel>
<services>
<service name="McActivationApp.EnrollmentService" behaviorConfiguration="McActivationApp.EnrollmentServicBehavior">
<endpoint address="" binding="webHttpBinding" contract="McActivationApp.IEnrollmentService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="McActivationApp.IEnrollmentService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="McActivationApp.EnrollmentServicBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>