我有一个在现有WCF服务中实现的接口,我不能为它添加引用

本文关键字:接口 不能 引用 添加 实现 有一个 服务 WCF | 更新日期: 2023-09-27 18:10:05

我有ASDService.svc:

 namespace StatusSimulator
 {
      [ServiceContract]
      public class ASDService
      {
           [OperationContract]
           public void DoWork()
      }
      [ServiceContract]
      public interface IScheduleTables
      {
            [OperatonContract]
            string getTable(string l, int r, int c)
            [OperatonContract]
            string getTable(string test)
            [OperatonContract]
            string createTable(List<string> lst, int r, int bal)
      }
      public class ScheduleTables:IScheduleTables
      {
               //Interface Implementation
      }
 }

web.config:

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="NewBehavior0">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="NewBinding0" />
      </basicHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="NewBehavior0" name="StatusSimulator.ASDService">
        <endpoint address="http://localhost:2405/ASDService.svc" binding="basicHttpBinding"
          bindingConfiguration="NewBinding0" name="ASDEndpoint" contract="StatusSimulator.ASDService" />
        <endpoint address="http://localhost:2405/ASDService.svc" binding ="basicHttpBinding"
          bindingConfiguration="NewBinding0" name="ScheduleTableEndPoint" contract="StatusSimulator.IScheduleTables" />
      </service>
    </services>
  </system.serviceModel>

我所尝试的绝对不会将接口暴露给服务。我唯一能看到的是ASDService.DoWork。如何在已有的服务中实现其他类或接口?

我在配置中尝试了两个服务,多个端点。我已经尝试在ASDService内嵌套接口。我在这里读过的教程和帖子比我想提到的要多。现在我得到了错误

合约名称"StatusSimulator"。在服务"ASDService"实现的契约列表中找不到IScheduleTables。

我很困惑,没有想法,如果这种情况继续下去,我将需要专业帮助。

我有一个在现有WCF服务中实现的接口,我不能为它添加引用

你不应该将一个服务契约(定义在具体类ADsService上)与另一个服务契约(IScheduleTables)的实现混合在一起。

我建议你用两个不同的服务契约作为接口(IASDServiceIScheduleTables),然后用一个具体的类实现这两个接口——就像这样:
namespace StatusSimulator
{
      [ServiceContract]
      public interface IASDService
      {
           [OperationContract]
           public void DoWork()
      }
      [ServiceContract]
      public interface IScheduleTables
      {
            [OperatonContract]
            string getTable(string l, int r, int c)
            [OperatonContract]
            string getTable(string test)
            [OperatonContract]
            string createTable(List<string> lst, int r, int bal)
      }
      public class ServiceImplementation : IADSService, IScheduleTables
      {
         // implement both interfaces here...
      }
 }

对于资源:我将使用这些作为初学者:

    这是WCF上的完整MSDN文档。

还有几本好书——最著名的是Michele Leroux Bustamante的《Learning WCF》。她涵盖了所有必要的主题,并以一种非常易懂和易接近的方式。这将教会你编写高质量、有用的WCF服务所需要知道的一切——基础、中间主题、安全性、事务控制等等。