我在服务配置和邮件安全性中使用wshttpbinding。我的应用程序工作正常,但是当客户端调用任何服务方法10或20分钟后,异常抛出,因为我的安全令牌将过期,连接无法正常工作。
一种解决方案是重新创建连接以创建新令牌(但我不能使用它,因为我的服务包含datacontext,如果我重新创建服务,则datacontext将是新的)。
其他解决方案是将安全类型从消息更改为传输(我尝试了此解决方案,但没有更改,因为抛出了另一个异常)。
答案 0 :(得分:0)
我假设当你说datacontext时你的意思是Enitity Framework datacontext。
您的解决方案似乎取决于客户端返回时可用的datacontext。这是一种非常脆弱的方法。即使您增加了所有相关的超时,如果服务器重新启动,您仍会遇到错误。
答案 1 :(得分:0)
最佳解决方案是在每个呼叫服务方法中重新创建连接。 但在我的位置,我不能使用它,因为我们的框架提供了特殊问题。 即使我的特殊问题,我使用特殊技巧的解决方案。;)
我做了一个方法返回true。我在最后一次调用后10分钟调用它。这使得服务令牌永远不会过期,直到应用程序关闭。 最后一次使用Try-Catch并处理Exception throw by Service。
特别感谢“Shiraz Bhaiji”