我有一个WCF服务,它托管在Windows服务中并具有net.tcp端点。客户端与服务位于同一LAN(工作组)中,但它们没有服务器的Windows用户帐户。
PS:当我在客户端和服务器中将Security.Mode设置为None时,我收到以下错误:
不支持请求的升级 '{SERVICE ADDRESS}'这可能是因为不匹配 绑定(例如安全性已启用 在客户端而不是服务器上。)
答案 0 :(得分:3)
Nettcp绑定安全,您的客户端必须提供Windows凭据,因为所有邮件都是通过tcp签名和加密的。将其设置为none可能会导致问题,您需要以下内容:
<netTcpBinding>
<binding name="netTcp">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
答案 1 :(得分:1)
我不知道为什么会这样,但如果我取消选中服务器的“文件夹选项”中的“使用简单文件共享”,一切都会完美无缺。
答案 2 :(得分:0)
我有自托管的net.tcp服务,无论有没有安全性它们都可以正常工作,事实上,你可以在同一个端口上托管多个安全和不安全的net.tcp合同,这使得防火墙设置更简单。
如果关闭简单文件共享是允许您的客户端/服务工作的原因,那么我怀疑您选择托管该服务的端口也被简单文件共享使用。
答案 3 :(得分: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>