2

我有一个自定义用户名密码 WCF 服务,需要由 Windows 客户端(Winforms 应用程序)以及 Web 客户端(html/aspx 页面)调用。我在 web.config 中有两个端点声明,但为了使其工作,我必须注释其中一个,因此,只有与该未注释端点关联的客户端类型才能访问该服务。如果我取消评论,并评论另一个,其他客户可以访问它。我不能同时保留它们,因此我无法使用两种类型的客户端访问它。

<service behaviorConfiguration="Behavior1" name="BeST.Service.Service">
    <endpoint address="" binding="webHttpBinding" contract="BeST.Service.IService" behaviorConfiguration="EndpBehavior"></endpoint>
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
     contract="BeST.Service.IService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/" />
      </baseAddresses>
    </host>
  </service>

正如代码所示,如​​果我想让这个服务为两个客户端工作,我需要使用两个端点(两个端点之上),或者,如果有另一种方法可以完成它,请帮忙!

4

1 回答 1

3

问题是您为两个端点提供了相同的地址。尝试为您的一个端点提供另一个相对地址,它应该可以工作。

<service behaviorConfiguration="Behavior1" name="BeST.Service.Service">
  <endpoint address="web" binding="webHttpBinding" contract="BeST.Service.IService" behaviorConfiguration="EndpBehavior"></endpoint>
  <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
    contract="BeST.Service.IService" />
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  <host>
    <baseAddresses>
      <add baseAddress="http://localhost/" />
    </baseAddresses>
  </host>
</service>
于 2013-01-14T08:59:20.510 回答