1
Catch-22防止WIF可保护的流式TCP WCF服务;破坏圣诞节,精神健康
我需要使用WIF保护流式WCF net.tcp服务端点。它应该根据我们的令牌服务器对传入的呼叫进行身份验证。该服务之所以流式传输是因为它旨在传输大量数据。 这似乎是不可能的。 而且如果我不能解决问题,我的圣诞节将会毁灭,我会在一个装满水槽的水里把自己喝死,而快乐的购物者会踩在我缓慢冷却的身体上。手提袋很认真,你们。 为什么这不可能呢?这是Catch-22。 在客户端上,我需要使用从令牌服务器获取的GenericXmlSecurityToken创建一个通道。没问题 // people around here hate the Framework Design Guidelines. var token = Authentication.Current._Token; var service = base.ChannelFactory.CreateChannelWithIssuedToken(token); return service.Derp(); 我说“没问题”吗?问题。实际上,NullReferenceException风格有问题。 我问框架,“兄弟,您是否还进行空检查?” 该框架是沉默的,因此我进行了分解,发现 ((IChannel)(object)tChannel). GetProperty<ChannelParameterCollection>(). Add(federatedClientCredentialsParameter); 是异常的来源,并且GetProperty调用正在返回null。那么,WTF?事实证明,如果我打开消息安全性并将客户端凭据类型设置为,IssuedToken则此属性现在存在于ClientFactory(提示:混蛋IChannel中没有等效的“ SetProperty”)。 <binding name="OMGWTFLOL22" transferMode="Streamed" > <security mode="Message"> <message clientCredentialType="IssuedToken"/> </security> </binding> 甜。没有更多的NRE。但是,现在我的委托人出生时有过错(仍然爱他,tho)。我仔细研究了WCF诊断程序(提示:让最坏的敌人在压垮他们并在他们之前开车之前,但在享受他们的女人和孩子的悲痛之前,先这样做),是因为服务器和客户端之间的安全性不匹配。 “ net.tcp:// localhost:49627 / MyService”不支持请求的升级。这可能是由于绑定不匹配(例如,在客户端而非服务器上启用了安全性)。 检查主机的诊断(再次:暗恋,开车,阅读日志,感叹),我认为这是对的 …
181
c#
wcf
.net-4.5
wif
nettcpbinding