C# 实现多个服务契约的WCF类
我有一个类C# 实现多个服务契约的WCF类,c#,wcf,multiple-inheritance,servicecontract,C#,Wcf,Multiple Inheritance,Servicecontract,我有一个类TestService,它实现了两个名为IService1和IService2的服务契约。但我在执行上面临困难 我的代码如下所示: Uri baseAddress = new Uri("http://localhost:8000/ServiceModel/Service"); Uri baseAddress1 = new Uri("http://localhost:8080/ServiceModel/Service1"); ServiceHost selfHost = new Ser
TestService
,它实现了两个名为IService1
和IService2
的服务契约。但我在执行上面临困难
我的代码如下所示:
Uri baseAddress = new Uri("http://localhost:8000/ServiceModel/Service");
Uri baseAddress1 = new Uri("http://localhost:8080/ServiceModel/Service1");
ServiceHost selfHost = new ServiceHost(typeof(TestService));
selfHost.AddServiceEndpoint(typeof(IService1), new WSHttpBinding(), baseAddress);
selfHost.AddServiceEndpoint(typeof(IService2), new WSHttpBinding(), baseAddress1);
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
selfHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
uribaseaddress=新的Uri(“http://localhost:8000/ServiceModel/Service");
Uri baseAddress1=新Uri(“http://localhost:8080/ServiceModel/Service1");
ServiceHost selfHost=新的ServiceHost(typeof(TestService));
AddServiceEndpoint(typeof(IService1),新的WSHttpBinding(),baseAddress);
AddServiceEndpoint(typeof(IService2),新的WSHttpBinding(),baseAddress1);
ServiceMetadataBehavior smb=新ServiceMetadataBehavior();
smb.HttpGetEnabled=true;
selfHost.Description.Behaviors.Add(smb);
selfHost.Open();
WriteLine(“服务准备就绪”);
控制台。WriteLine(“按以终止服务”);
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
我得到一个运行时错误,如下所示:
的HttpGetEnabled属性
ServiceMetadataBehavior设置为true
HttpGetUrl属性是一个
相对地址,但没有http
基址。或者提供一个http
基址或将HttpGetUrl设置为
绝对地址
我能怎么办?我真的需要两个独立的端点吗?您需要做的就是添加一个基址。 您仍然有两个分离的端点
ServiceHost selfHost = new ServiceHost(typeof(TestService), new Uri ("http://localhost:8080/ServiceModel"));
您只需添加一个基址。 您仍然有两个分离的端点
ServiceHost selfHost = new ServiceHost(typeof(TestService), new Uri ("http://localhost:8080/ServiceModel"));
你可以用两种方法修复它 (一) (二)
你可以用两种方法修复它 (一) (二)
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8000/ServiceModel");
selfHost.Description.Behaviors.Add(smb);