Я настроил традиционные службы WCF, используя конечные точки SOAP.В моем клиентском проекте я добавил ссылку на сервис и т. Д. Они работают как положено.
Я создал службу WCF с поддержкой JSONP, внес изменения в файл .svc, веб-конфигурацию и т. Д. Я создал тестовую страницу клиента для тестирования.Я успешно звоню в службу JSONP.
Однако изменения, внесенные в веб-конфигурацию, нарушили ссылку на службу для служб SOAP.Я хотел бы использовать оба типа конечных точек.Я не уверен, как настроить службы и веб-конфигурации.
Если http получает только, может ли каждая операция (независимо от того, предназначена ли она для SOAP или JSONP) быть украшена: [WebGet(ResponseFormat = WebMessageFormat.Json)]
Тогда мой класс обслуживания должен: [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Когда я сейчас пытаюсь обновить ссылку на службу в моем клиентском проекте, я получаю
Экземпляр привязки уже был связан для прослушивания URI 'http://flixsit:1000/FlixsitWebServices.svc'. Если две конечные точки хотят совместно использовать один и тот жеListenUri, они также должны использовать один и тот же экземпляр объекта привязки.Две конфликтующие конечные точки были либо указаны в вызовах AddServiceEndpoint (), либо в файле конфигурации, либо в комбинации AddServiceEndpoint () и config.
Добавление конфигурации SOAP в мою веб-конфигурацию также нарушает конечную точку JSONP.Вызов JSONP на стороне клиента не требует ссылки на службу клиента (или генерации прокси), но SOAP делает это правильно?
My Service WebConfig:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="DefaultBehaviors">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
<basicHttpBinding>
<binding name="BasicHttpEndpointBinding" />
</basicHttpBinding>
</bindings>
<services>
<service name="Flixsit.Services.FlixsitWebServices" behaviorConfiguration="DefaultBehaviors">
<endpoint name="JSONPEndPoint" address=""
binding="webHttpBinding"
bindingConfiguration="webHttpBindingWithJsonP"
contract="Flixsit.Services.IFlixsitWebServices"
behaviorConfiguration="webHttpBehavior" />
<endpoint name="HttpEndPoint" address=""
binding="basicHttpBinding"
contract="Flixsit.Services.IFlixsitWebServices" />
<host>
<baseAddresses>
<add baseAddress="http://Flixsit:1000/FlixsitWebServices.svc" />
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>