Я создал проект, который содержит службу windows (windowsservices.cs), и я добавил контракты wcf и файл службы в этом классе (windowservices.cs). его файл app.config содержитnet.tcp, соединение сокета было прервано
<service behaviorConfiguration="WindowsService1.Service1Behavior"
name="AgentSvcImpl">
<endpoint address="" binding="netTcpBinding" bindingConfiguration=""
name="nethttpendpoint" contract="IAgentWinService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
name="nethttpmetadataendpoint" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8011/AgentSvcImpl" />
</baseAddresses>
</host>
</service>
и в службе Windows OnStart метод я вошел следующий код:
ServiceHost serviceHost = null;
if (serviceHost != null)
{
serviceHost.Close();
}
//Create a URI to serve as the base address
Uri httpUrl = new Uri("net.tcp://localhost:8011/AgentSvcImpl");
//Create ServiceHost
serviceHost = new ServiceHost(typeof(WindowsService1.AgentSvcImpl), httpUrl);
//Add a service endpoint
serviceHost.AddServiceEndpoint(typeof(WindowsService1.IAgentWinService), new NetTcpBinding(), "");
//Enable metadata exchange
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
serviceHost.Description.Behaviors.Add(smb);
//Start the Service
serviceHost.Open();
, когда я начинаю эту услугу в services.msc, он начал хорошо. но когда я пытаюсь добавить ссылку на службу, она дает следующую ошибку.
Метаданные содержат ссылку, которая не может быть разрешена: 'net.tcp: // localhost: 8011/AgentSvcImpl'. Соединение сокета было прервано. Это может быть вызвано ошибкой обработки вашего сообщения или превышением времени приема удаленным хостом или проблемой сетевого ресурса. Локальный тайм-аут гнезда был «00: 04: 59.0054016». Существующее соединение было принудительно закрыто удаленным хостом Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.
как решить это?
Это может быть связано с неправильным подключением, но не может быть подтверждено. Чтобы получить четкое представление о том, что происходит, вам может потребоваться настроить трассировку как для клиента, так и для службы. Чтобы просмотреть трассировки, вы должны использовать SvcTraceViewer, который должен находиться в папке «Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin» или «Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin». Если вам нужно проследить как клиент, так и службу, вы можете открыть оба файла вместе в SvcTraceViewer с помощью меню «Файл/Добавить». – adityaswami89