Несмотря на многочисленные поиски и прочтение таких статей, как: Изучение привязки именованных каналов WCF - часть 1 (включая части 2 и 3 включительно), я не смог заставить свой сервис работать должным образом.
Вот мой конфиг:
<system.serviceModel>
<client>
<endpoint address="net.pipe://localhost/GlobalPositioningService"
binding="netNamedPipeBinding"
contract="GI.Services.GlobalPositioning.Contracts.IGlobalPositioning" />
</client>
<services>
<service name="GI.Services.GlobalPositioning.Services.GlobalPositioningService">
<endpoint address=""
binding="wsHttpBinding"
contract="GI.Services.GlobalPositioning.Contracts.IGlobalPositioning">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="net.pipe://localhost/GlobalPositioningService"
binding="netNamedPipeBinding"
contract="GI.Services.GlobalPositioning.Contracts.IGlobalPositioning" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/GlobalPositioningService/"/>
</baseAddresses>
</host>
</service>
</services>
Затем я пытаюсь проверить мой сервис через Named Pipes:
[TestFixture]
public class GlobalPositioningServiceTests {
[TestFixtureSetUp]
public void SetUpHost() {
var channelFactory = new ChannelFactory<IGlobalPositioning>(binding, new EndpointAddress(address));
channelFactory.Open();
service = channelFactory.CreateChannel();
}
private const string address = "net.pipe://localhost/GlobalPositioningService";
private static readonly Binding binding = new NetNamedPipeBinding();
private static IGlobalPositioning service;
}
И я также попробовалдругой способ, используя экземпляр ServiceHost:
[TestFixtureSetUp]
public void SetUpHost() {
host = new ServiceHost(typeof(GlobalPositioningService));
host.AddServiceEndpoint(typeof(IGlobalPositioning), binding, address);
host.Open();
service = new GlobalPositioningService();
}
И я всегда получаю эту ошибку с трассировкой стека:
Ошибка 2 Test 'GI.Services.GlobalPosition.Services.Tests.GlobalPositionServiceTests.GetGlobalPositionWorksWithDiacriticsInMunicipalityName ("143, rue Marcotte, Sainte-Anne-de-la-P \ x00E9rade", 46.5736528d, -72.2021346d) 'не удалось: System.ServiceModel.EndpointNotFoundExpoint: конечное прослушивание: не былоlocalhost / GlobalPositionService, который может принять сообщение.Это часто вызвано неправильным адресом или действием SOAP.Смотрите InnerException, если имеется, для более подробной информации.----> System.IO.PipeException: конечная точка канала 'net.pipe: // localhost / GlobalPositionService' не найдена на вашем локальном компьютере.
Трассировка стека сервера: в System.ServiceModel.Channels.PipeConnectionInitiator.GetPipeName (Uri uri) в System.ServiceModel.Channels.NamedPipeConnectionPoolRegistry.NamedPipeConnectionPool.GetPoolKer через точку доступа к точке доступа.CommunicationPool`2.TakeConnection (адрес EndpointAddress, Uri via, тайм-аут TimeSpan, TKey и ключ) в System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection (тайм-аут TimeSpan) в System.ServiceModel.Channels.ClientFraouterOcuSenseSourceSenseSpaceSpaceSpaceSpaceSpaceSpaceSpaceSpaceSpaceSpaceSpaceSpaceSpaceStation.Channels.CommunicationObject.Open (Тайм-аут TimeSpan) в System.ServiceModel.Channels.ServiceChannel.OnOpen (Тайм-аут TimeSpan) в System.ServiceModel.Channels.CommunicationObject.Open (Тайм-аут TimeSpan) в System.ServicenelSOpenShanOpenShanCoSenseChanCoreShanCoreShanCoreShanCoreShanCoreShanCoreShanCoreShanCoreShanCoreShanCoreShanConeChanerCanerShanCenceChanSerChanerShanCenceShanC)..ServiceModel.Channels.ServiceChannel.ICallOnce.Call (канал ServiceChannel, время ожидания TimeSpan) в System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce (тайм-аут TimeSpan, каскад CallOnceManager) в System.ServiceModel.Channels.ServiceChannel.EnsureOpened (тайм-аут TimeSpan) в System.ServiceModel.Channels.ServiceChannel.Call (строковое действие, логическая операция [onewtime, Object Object [операционная], Object Objectunun, ProxyOperationR)] outs, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, операция ProxyOperationRuntime) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (сообщение об отправке IMessage) * 10 * 10 * 10в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (тип MessageData & msgData, Int32) в GI.SetloGloGlobalSignSigning.(String mailingAddress) в GI.Services.GlobalPposition.Services.Tests.GlobalPositionServiceTests.GetGlobalPositionWorksWithDiacriticsInMunicipalityName (строковый адрес, двойная широта,Двойная долгота) в C: \ Open \ Projects \ Framework \ Src \ GI.Services \ GI.Services.GlobalPosition.Services.Tests \ GlobalPositionServiceTests.cs: строка 27 - Исключение Cipe \: Open \ Projects \ Framework \ Src \ GI.Services \ GI.Services.GlobalPosition.Services.Tests \ GlobalPositionServiceTests.cs 27
Для вашей информации я использую:
- Visual Studio 2010
- Windows 7
- NUnit
И мой сервис содержится в библиотеке служб WCF.