Я новичок в WCF и пытаюсь получить некоторые идеи, которые у меня есть с земли.Конфигурация для WCF с несколькими конечными точками
В принципе у меня есть проект веб-приложений WCF со следующим в web.config:
<system.serviceModel>
<services>
<service name="WcfService1.ServiceContract.IDirectorySearchService" behaviorConfiguration="defaultServiceBehavior">
<endpoint name="restxml" address="xml" binding="webHttpBinding" contract="WcfService1.ServiceContract.IDirectorySearchServiceXml" behaviorConfiguration="xmlRestBehavior"/>
<endpoint name="restjson" address="json" binding="webHttpBinding" contract="WcfService1.ServiceContract.IDirectorySearchServiceJson" behaviorConfiguration="jsonRestBehavior"/>
<endpoint name="soap" address="soap" binding="basicHttpBinding" contract="WcfService1.ServiceContract.IDirectorySearchService"/>
<endpoint name="mex" address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="defaultServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="xmlRestBehavior">
<webHttp/>
</behavior>
<behavior name="jsonRestBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Мои интерфейсы выглядеть следующим образом:
[ServiceContract]
public interface IDirectorySearchServiceXml
{
[OperationContract]
[WebGet(UriTemplate = "Search/")]
SearchResults Search();
}
[ServiceContract]
public interface IDirectorySearchServiceJson
{
[OperationContract]
[WebGet(UriTemplate = "Search/")]
SearchResults Search();
}
[ServiceContract]
public interface IDirectorySearchService
{
[OperationContract]
SearchResults Search(int? sportId, int? instituteId, DateTime? startDate, DateTime? endDate);
}
Теперь часть я имею небольшие проблемы с тем, что еще мне нужно, чтобы получить это и работает ... Как и с учетом того, что .svc-файлы мне нужны и у меня есть права на правильность ... Также какие адреса мне нужно использовать, чтобы заставить это работать либо через браузером или через тестовый клиент WCF. Примечание. В настоящее время я использую 3.5.
Приветствия Энтони
UPDATE:
Так что если у меня есть что-то вроде следующего, я должен был бы 3 различных SVC файлов ... Если это так, то нет особого смысла в том, адресная часть в конечной точке ...
public class DirectorySearchServiceXml : IDirectorySearchServiceXml
{
...
}
public class DirectorySearchServiceJson : IDirectorySearchServiceJson
{
...
}
public class DirectorySearchService : IDirectorySearchService
{
...
}
Но я мог бы создать 1 класс, exsplictly implments все 3 интерфейса, то я бы только 1 SVC, а затем адрес становится Релевент ... Является ли это правильно?
Да, если у вас есть ** три класса **, которые реализуют контракт на обслуживание, вам необходимо ** три файла SVC **. Если у вас есть только один класс **, реализующий все три интерфейса, то вам нужен ** один SVC-файл ** - один SVC-файл для каждого класса, который реализует ваши контракты. –
Я сделал один класс, реализующий все три интерфейса, и я получаю следующая ошибка: «Сервис» WcfService1.Service.DirectorySearchService имеет нулевые конечные точки приложения (не инфраструктура). Возможно, это связано с тем, что файл конфигурации не найден для вашего приложения или из-за того, что ни один элемент службы, соответствующий имени службы, не может быть найден в конфигурации файл или потому, что в элементе службы не было определено никаких конечных точек ». есть идеи? Моя конфигурация такая же, как и выше, и svc выглядит как <% @ ServiceHost Language = "C#" Debug = "true" Service = "WcfService1.Service.DirectorySearchService"%> –
, а URL-адрес, который я использую, - "http: // localhost: 16089/DirectorySearchService.svc/mex " –