У меня есть служба WCF, которую я пытаюсь заставить работать с wcf, старым мылом и обычным xml.Служба называется TestService.svc, и ее конфигурация выглядит следующим образом:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="TestServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="poxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="TestServiceBehavior" name="TestService">
<endpoint address="" binding="wsHttpBinding" contract="ITestService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/>
<endpoint address="xml" binding="webHttpBinding" behaviorConfiguration="poxBehavior" contract="ITestService"/>
</service>
</services>
</system.serviceModel>
Я получил этот код из этого другого вопроса: Конечные точки REST / SOAP для службы WCF
Теперь, похоже, что XML webHttpBinding работает хорошо, но wsHttpBinding и basicHttpBinding работают не очень хорошо.
Я могу просматривать сервис с помощью: http://localhost:8295/WCFTest/TestService.svc
Я также могу использоватьэта конечная точка добавляет ссылку на службу в проект веб-сайта asp.net и пытается использовать службу, но когда я создаю клиента:
TestService.TestServiceClient mytest = new TestService.TestServiceClient();
В нем говорится, что необходимо указать конечную точку из-за нескольких конечных точек.Я думаю, из-за наличия обоих wsHttp и basicHttp?Как мне указать конечную точку здесь?
Далее я пытаюсь использовать конечную точку basicHttpBinding, добавляя веб-ссылку (не ссылку на службу) на веб-сайт .net 2.0.На данный момент я не могу добавить ссылку и получить ошибку 400.
Итак, я удаляю привязку wsHttp и могу добавить веб-ссылку и использовать службу через клиент .net 2.0.
Как настроить его так, чтобы я мог использовать wsHttpBinding для клиентов, которые могут использовать обычные службы WCF, basicHttpBinding для клиентов, которые могут принимать только старые запросы SOAP, отличные от WCF, и при этом иметь доступ к webHttpBinding для клиентов, которые хотят использоватьобычный xml?