c# – 无法启动wcf服务主机
发布时间:2020-12-15 08:22:41 所属栏目:百科 来源:网络整理
导读:我正在尝试为我的WCF应用程序创建服务主机.当我启动应用程序时,我收到错误消息 The service cannot be started. This service has no endpoint defined. Please add at least one endpoint for the service in config file and try again. 我按照PluralSight
我正在尝试为我的WCF应用程序创建服务主机.当我启动应用程序时,我收到错误消息
我按照PluralSight上的教程进行操作,这是我提出的代码 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's 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> 解决方法
TL;博士;修复App.config中的名称
对我来说,这个问题是由ReSharper触发的:我重命名了这个服务,并没有在任何地方重命名它. 进入App.config以更正服务和接口名称以解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |