2

我有一个 WCF 服务,它托管在 Windows 服务中并具有 net.tcp 端点。客户端与服务位于同一 LAN(工作组)中,但它们没有服务器的 Windows 用户帐户。

PS:当我在客户端和服务器中将 Security.Mode 设置为 None 时,我收到以下错误:

'{SERVICE ADDRESS}' 不支持请求的升级,这可能是由于绑定不匹配(例如,在客户端而不是在服务器上启用了安全性)。

4

4 回答 4

3

默认情况下, Nettcp 绑定是安全的,您的客户端必须提供 Windows 凭据,因为所有消息都通过 tcp 进行签名和加密。将其设置为 none 可能会导致问题,您将需要以下内容:

<netTcpBinding>
     <binding name="netTcp">
       <security mode="Transport">
         <transport clientCredentialType="Windows" />
       </security>
     </binding>
</netTcpBinding>
于 2010-07-01T17:59:10.967 回答
1

好的,我解决了这个问题。

我不知道为什么会这样,但是如果我取消选中服务器文件夹选项中的“使用简单文件共享”,一切正常。

于 2010-07-03T06:20:29.910 回答
0

我有自托管的 net.tcp 服务,无论有无安全,它们都可以正常工作,事实上,您可以在同一个端口上托管多个安全和不安全的 net.tcp 合约,这使得防火墙设置更简单。

如果关闭简单文件共享是允许您的客户端/服务工作的原因,那么我怀疑您选择托管服务的端口也被简单文件共享使用。

于 2015-08-22T16:26:28.837 回答
0

如果上述任何解决方案对您不起作用,请尝试从您的端点中删除身份,如下所示:

<endpoint address="net.tcp://127.0.0.1/FacilitySchedulesService/FacilitySchedulesService.svc"
                binding="netTcpBinding" bindingConfiguration="FacilityScheduleDSTCP"
                contract="FacilitySchedules.IFacilitySchedulesService" name="FacilityScheduleDSTCP">
        <!--<identity>
          <userPrincipalName value="abc" />
        </identity>-->
      </endpoint>
于 2016-05-16T11:39:46.297 回答