Я пытаюсь разместить две службы WCF в одном приложении. Я хочу, чтобы одни и те же BaseAddress, но имеют свои собственные URL-адреса что-то вроде: net.tcp: // Localhost: 1234/service1 и net.tcp: // Localhost: 1234/Service2Ошибка регистрации Url с WCF при использовании привязки Http
Следующая конфиг позволяет мне сделать это:
<system.serviceModel>
<services>
<service name="VanillaWcf.Shared.MyService" behaviorConfiguration="beh">
<endpoint address="myservice" binding="netTcpBinding" name="tcpEndPoint" contract="VanillaWcf.Shared.IMyService" />
<endpoint address="myservice" binding="wsHttpBinding" name="httpEndPoint" contract="VanillaWcf.Shared.IMyService"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:1234" />
</baseAddresses>
</host>
</service>
<service name="VanillaWcf.Shared.SecondService" behaviorConfiguration="beh">
<endpoint address="secondService" binding="netTcpBinding" name="tcpEndPoint" contract="VanillaWcf.Shared.ISecondService"/>
<endpoint address="secondService" binding="wsHttpBinding" name="httpEndPoint" contract="VanillaWcf.Shared.ISecondService"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:1234"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="beh">
<serviceMetadata httpGetEnabled="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
И код:
ServiceHost host = new ServiceHost(typeof(MyService));
ServiceHost secondHost = new ServiceHost(typeof(SecondService));
host.Open();
secondHost.Open();
Это прекрасно работает.
Однако я получаю исключение, когда добавляю http://localhost:4321 в качестве базового адреса обеих служб в конфиге.
Исключение: ChannelDispatcher в «http://localhost:4321/» с контрактом (ы) «IHttpGetHelpPageAndMetadataContract"»не может открыть его IChannelListene« с внутренним исключением Регистрационная уже существует для URI»http://localhost:4321
У меня нет конфигурации MEX, и я не хочу этого.
Примечание. Служба NetPortSharing отключена.
еще одна проблема: у вас отсутствуют какие-либо адреса (базовый адрес или явные адреса конечных точек) для ваших привязок HTTP ..... –
Я добавляю его, когда хочу привязать Http, и вот когда проблема начинается – Khash