我使用消息模式开发应用程序安全性:
<security mode="Message">
<message clientCredentialType="UserName" negotiateServiceCredential="true"/>
</security>
它在本地机器上运行良好,但是当我将它运行到PC时,它会出现错误:
安全协议无法验证传入消息
使用跟踪我看到:
安全时间戳因其创建时间而无效 ('2012-07-17T21:08:43.211Z')在未来。现在的时间是 '2012-07-17T07:08:48.769Z'并允许时钟偏差 '00:05:00'
什么是问题?感谢
答案 0 :(得分:0)
一个选项可能是(如果您不需要时间戳) - 您可以禁用向请求中的安全标头添加时间戳,WCF不会在响应中指望它。代码取自this链接
// *** Don't include TimeStamp header - so server won't expect it back
// *** This allows results returned without any Soap Headers
BindingElementCollection elements = client.Endpoint.Binding.CreateBindingElements();
elements.Find<SecurityBindingElement>().IncludeTimestamp = false;
client.Endpoint.Binding = new CustomBinding(elements);