Cannot start wcf service host

I am trying to create a service host for my WCF application. When I launch the application, I get an error

The service cannot be started. This service does not have an endpoint. Add at least one endpoint for the service in the configuration file and try again.

I followed the PluralSight tutorial and this is the code I came up with

using System.ServiceModel; using FreedomService; namespace ConsoleHost { class Program { static void Main(string[] args) { var host = new ServiceHost(typeof(PeopleService)); host.AddServiceEndpoint(typeof (IPeopleService), new BasicHttpBinding(), "http://localhost:8080/people/basic"); host.AddServiceEndpoint(typeof(IPeopleService), new WSHttpBinding(), "http://localhost:8080/people/ws"); host.AddServiceEndpoint(typeof(IPeopleService), new NetTcpBinding(), "net.tcp://localhost:8081/people"); try { host.Open(); PrintServiceInfo(host); Console.ReadLine(); host.Close(); } catch (Exception e) { Console.WriteLine(e); host.Abort(); } } static void PrintServiceInfo(ServiceHost host) { Console.WriteLine("{0} is up and running with these endpoints:",host.Description.ServiceType); foreach (var endpoint in host.Description.Endpoints) { Console.WriteLine(endpoint.Address); } } } } 

IPeopleService.cs

 [ServiceContract] public interface IPeopleService { [OperationContract] string GetData(int value); [OperationContract] PersonType GetPersonById(int id); } 

PeopleService.cs

 public class PeopleService : IPeopleService, IDisposable { private ICollection<PersonType> People = new Collection<PersonType> { //... }; public string GetData(int value) { return string.Format("You entered: {0}", value); } public PersonType GetPersonById(int id) { var person = People.First(p => p.Id == id); if (person!= null) return person; throw new InvalidDataException(string.Format("No Person with the id: {0} found.",id)); } public void Dispose() { this.People = null; } } 

app.config

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration> 

servicelibrary app.config

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> </appSettings> <system.web> <compilation debug="true" /> </system.web> <!-- When deploying the service library project, the content of the config file must be added to the host app.config file. System.Configuration does not support config files for libraries. --> <system.serviceModel> <services> <service name="FreedomService.PeopleService"> <host> <baseAddresses> <add baseAddress = "http://localhost:8733/Design_Time_Addresses/FreedomService/basic/" /> </baseAddresses> </host> <!-- Service Endpoints --> <!-- Unless fully qualified, address is relative to base address supplied above --> <endpoint address="" binding="basicHttpBinding" contract="FreedomService.IPeopleService"> <!-- Upon deployment, the following identity element should be removed or replaced to reflect the identity under which the deployed service runs. If removed, WCF will infer an appropriate identity automatically. --> <identity> <dns value="localhost"/> </identity> </endpoint> <!-- Metadata Endpoints --> <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. --> <!-- This endpoint does not use a secure binding and should be secured or removed before deployment --> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior> <!-- To avoid disclosing metadata information, set the values below to false before deployment --> <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="False" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> 
+6
source share
2 answers

tl; dr; Fix name in App.config

For me, this problem was caused by ReSharper: I renamed the service and did not rename it everywhere.

Go to App.config to fix the service and interface names to fix the problem.

+8
source

I had the same problem.

My contract attribute was missing

 [ServiceContract] //System.ServiceModel.ServiceContract public interface IPdaContract { 
0
source

Source: https://habr.com/ru/post/946800/


All Articles