У меня есть решение с 3-х проектов:службы WCF относительный URI без .svc
- (Service-реализация)
- (Console Application MEProject.WCF.ServiceLayer MEProject.WCF.HostConsole, который может разместить службу)
- MEProject.WCF.HostIIS (WCF Service Application)
Моя цель состоит в том, что я могу переключаться между 2 проекта без изменения Ури (конечных точек конфигураций) в клиентском проекте. Ну, проблема в том, что если я начну консольное приложение, конечные точки являются
http://localhost:8080/MultipleEndpointService/FirstEndpoint
http://localhost:8080/MultipleEndpointService/SecondEndpoint
Но если я запустить приложение WCF службы, конечные точки являются
http://localhost:8080/MultipleEndpointService.svc/FirstEndpoint
http://localhost:8080/MultipleEndpointService.svc/SecondEndpoint
Как вы можете видеть, разница «.svc». Теперь мой вопрос: как я могу сказать, что приложение службы WCF действует как консольное приложение, а не «.svc» в uri?
Вот код, я использую, чтобы получить несколько конечных точек в консольном приложении:
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
serviceHostBase.ChannelDispatchers.ToList().ForEach(channelDispatcher =>
{
ChannelDispatcher dispatcher = channelDispatcher as ChannelDispatcher;
if (dispatcher != null)
{
dispatcher.Endpoints.ToList().ForEach(endpoint =>
{
endpoint.DispatchRuntime.InstanceProvider = new CallBackInstanceProvider(serviceDescription.ServiceType, InstanceCreator);
});
}
});
}
А вот приложение службы WCF web.config:
<system.serviceModel>
<services>
<service name="MEProject.Service.WCF.HostIIS.MultipleEndpointService">
<endpoint name="FirstEndpoint" address="FirstEndpoint" binding="basicHttpBinding" contract="MEProject.Service.WCF.ServiceLayer.IFirstEndpoint"/>
<endpoint name="SecondEndpoint" address="SecondEndpoint" binding="basicHttpBinding" contract="MEProject.Service.WCF.ServiceLayer.ISecondEndpoint"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/MultipleEndpointService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Заранее спасибо за ваш ответ!