如何强制CredentialCache进程清除所有条目?

时间:2011-01-25 16:17:46

标签: .net httpwebrequest ntlm

我有一个服务器进程,它的工作就是监视各种Web服务。 Web服务全部托管在SharePoint服务器场上,最终在基础HttpWebRequest方法中使用NTLM身份验证。

我的所有初始连接都运行正常,我可以看到fiddler中的典型挑战/响应流量。

但是,过了一段时间,如果SharePoint场服务器被退回(当我的监控服务保持运行),下次我的应用程序尝试连接到相同的Web服务时,我会收到HTTP 401 Unauthorized响应。

这种情况发生一次,然后如果我的监控服务再次连接,一切正常,连接通过就好了。

通过跟踪这一点我可以看出,初始连接都得到了正确的挑战/授权,并且NTLM令牌在我的监控过程中被缓存到每个唯一的Web服务URL。在SharePoint服务器被退回时,这些NTLM令牌不再有效。但是,我的进程必须在缓存中的那些令牌被丢弃之前发生一次失败,之后挑战/响应舞蹈再次发生并且一切正常。

所以,我的问题是:我有没有办法强制将NTLM令牌从缓存中删除,以便我可以避免401未经授权的响应?

我意识到每次进行Web服务调用时,我都不希望挑战/响应额外开销。但是在我的定期监控中有一个明确的起点,即“清除缓存”并支付一次质询/响应惩罚是有意义的,这样所有后续请求都可以正常运行而不会发生401未经授权的错误。

0 个答案:

没有答案