我有一个正在编码的 WCF 应用程序。我在更改内容时启动和停止它几次,然后再次运行服务调用。
因为我需要会话信息,所以我正在使用wsHttpBinding
.
在我搬到之前,wsHttpBinding
我正在使用basicHttpBinding
,我可以停止服务,进行更改并重新启动它。然后我可以针对端点运行我的 WCF 测试客户端(WCF Storm),它仍然可以正常运行。
现在它告诉我:
无法处理该消息。这很可能是因为操作“ http://tempuri.org/IMyService/MyOperation ”不正确,或者因为消息包含无效或过期的安全上下文令牌,或者因为绑定之间不匹配。如果服务由于不活动而中止通道,则安全上下文令牌将无效。为了防止服务过早中止空闲会话,请增加服务端点绑定的接收超时。
这意味着我必须刷新我的连接并重新设置我的服务调用(数百次后会变得很烦人。)。
我读到安全超时是 10 分钟。我在不到 2 分钟的时间内重新运行,所以我认为这不是超时问题。
我的猜测是令牌过期的明显原因是我已经杀死并重新启动了服务。
问题是我根本不需要安全的东西(我只需要会话的东西,否则我会使用 BasicHttpBinding
反正有没有让我的 WCF 服务不关心安全上下文令牌?
注意:我的测试客户端默认为 wsHttpBinding 并设置了安全性。但我假设它正在设置它,因为我的服务正在发布它需要安全性。
我尝试过的事情:
我尝试了类似于我在这里找到的配置
<bindings> <wsHttpBinding> <binding name="WsEventLogBinding"> <security mode="Message"> <message establishSecurityContext="false" /> </security> </binding> </wsHttpBinding> </bindings>
但我真的不知道这意味着什么,或者它是否是我需要的(这根本不安全(目前))。
这并没有消除问题。
- 设置
<security mode="None">
这没有帮助。