Asp.net 是否可以有多个Wcf服务类?如果是,那怎么办?

Asp.net 是否可以有多个Wcf服务类?如果是,那怎么办?,asp.net,wcf,web-services,Asp.net,Wcf,Web Services,是否可以有多个Wcf服务类。因为我有两个契约接口,并且希望在两个不同的服务类中实现。可能吗?是的,但是公开这些服务是另一回事,您不能在一个地址上公开两个合同(除非您将它们包装在一个接口中,不推荐这样做)。您需要为web.config中的两个服务契约指定不同的端点。例如, <services> <service name="TwoContracts.Service1"> <endpoint address="" binding="basicHttpBin

是否可以有多个Wcf服务类。因为我有两个契约接口,并且希望在两个不同的服务类中实现。可能吗?

是的,但是公开这些服务是另一回事,您不能在一个地址上公开两个合同(除非您将它们包装在一个接口中,不推荐这样做)。您需要为web.config中的两个服务契约指定不同的端点。例如,

 <services>
  <service name="TwoContracts.Service1">
    <endpoint address="" binding="basicHttpBinding" contract="TwoContracts.IService1">
    </endpoint>
    <host>
      <baseAddresses>
        <add baseAddress="http://yoururl.com/TwoContracts/Service1" />
      </baseAddresses>
    </host>
  </service>
  <service name="TwoContracts.Service2">
    <host>
      <baseAddresses>
        <add baseAddress="http://yoururl.com/TwoContracts/Service2" />
      </baseAddresses>
    </host>
    <endpoint address="" binding="basicHttpBinding"
      contract="TwoContracts.IService2" />
  </service>
</services>

如果您有两个合同,比如IService1和IService2,那么您有两个选择:

  • 两个服务契约都由一个服务实现,该服务实现来自IService1和IServe2的所有方法。然后,您的配置文件将如下所示:

    <services>
        <service name="MyNamespace.Service">
            <host>
                <baseAddresses>
                    <add baseAddress="http:localhost:8080" />
                </baseAddresses>
            </host>
            <endpoint address="Service1" binding="basicHttpBinding" contract="MyNameSpace.IService1" />
            <endpoint address="Service2" binding="basicHttpBinding" contract="MyNameSpace.IService2" />
        </service>
    </services>
    <services>
        <service name="MyNamespace.Service1">
            <host>
                <baseAddresses>
                    <add baseAddress="http:localhost:8081" />
                </baseAddresses>
            </host>
            <endpoint address="Service1" binding="basicHttpBinding" contract="MyNameSpace.IService1" />
        </service>
        <service name="MyNamespace.Service2">
            <host>
                <baseAddresses>
                    <add baseAddress="http:localhost:8082" />
                </baseAddresses>
            </host>
            <endpoint address="Service2" binding="basicHttpBinding" contract="MyNameSpace.IService2" />
        </service>
    </services>
    
    
  • 每个契约由单独的服务实现,比如说Service1和Service2,那么您的配置如下所示:

    <services>
        <service name="MyNamespace.Service">
            <host>
                <baseAddresses>
                    <add baseAddress="http:localhost:8080" />
                </baseAddresses>
            </host>
            <endpoint address="Service1" binding="basicHttpBinding" contract="MyNameSpace.IService1" />
            <endpoint address="Service2" binding="basicHttpBinding" contract="MyNameSpace.IService2" />
        </service>
    </services>
    <services>
        <service name="MyNamespace.Service1">
            <host>
                <baseAddresses>
                    <add baseAddress="http:localhost:8081" />
                </baseAddresses>
            </host>
            <endpoint address="Service1" binding="basicHttpBinding" contract="MyNameSpace.IService1" />
        </service>
        <service name="MyNamespace.Service2">
            <host>
                <baseAddresses>
                    <add baseAddress="http:localhost:8082" />
                </baseAddresses>
            </host>
            <endpoint address="Service2" binding="basicHttpBinding" contract="MyNameSpace.IService2" />
        </service>
    </services>
    
    

是-您只需创建两个服务类,每个类都实现该接口。。。。问题在哪里?我编辑了我的问题,实际上我有两个不同的合同界面。再次:是-当然-问题是什么<代码>公共类服务1:IService1和
公共类服务2:IService2
…好的,但当我尝试通过客户端时,无法访问服务2。您需要向我们显示更多信息-您做了什么?你哪里有问题?这仍然很不清楚。。。。。