【问题标题】:WCF class implementing multiple service contracts实现多个服务合同的 WCF 类
【发布时间】:2010-05-12 08:29:18
【问题描述】:

我有一个类TestService,它实现了两个服务契约,称为IService1IService2。但我在实施中遇到了困难。

我的代码如下:

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();

我收到一个运行时错误:

HttpGetEnabled 属性 ServiceMetadataBehavior 设置为 true 并且 HttpGetUrl 属性是 相对地址,但没有http 基地址。要么提供一个http 基地址或将 HttpGetUrl 设置为 绝对地址。

我能做些什么呢?我真的需要两个独立的端点吗?

【问题讨论】:

    标签: c# wcf multiple-inheritance servicecontract


    【解决方案1】:

    你可以通过两种方式修复它

    1)

    Uri baseAddress = new Uri("http://localhost:8000/ServiceModel");
    ServiceHost selfHost = new ServiceHost(typeof(TestService), baseAdress);
    
    selfHost.AddServiceEndpoint(typeof(IService1), new WSHttpBinding(), "Service");
    selfHost.AddServiceEndpoint(typeof(IService2), new WSHttpBinding(), "Service1");
    
    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
    smb.HttpGetEnabled = true;
    selfHost.Description.Behaviors.Add(smb);
    

    2)

    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
    smb.HttpGetEnabled = true;
    smb.HttpGetUrl = new Uri("http://localhost:8000/ServiceModel");
    selfHost.Description.Behaviors.Add(smb);
    

    【讨论】:

      【解决方案2】:

      您需要做的就是添加一个基地址。 你仍然有两个独立的端点。

      ServiceHost selfHost = new ServiceHost(typeof(TestService), new Uri ("http://localhost:8080/ServiceModel")); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-23
        • 1970-01-01
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        相关资源
        最近更新 更多