在C#中调用webservice后清理SOAP头

时间:2012-03-15 14:49:31

标签: c# web-services memory soap-client

我在源自SoapHttpClientProtocol的C#app中注册了.webservice。使用Invoke()方法调用远程方法。 一切正常。

我的问题是,我正在调用方法传递用户名/密码,一切都是通过SSL,chanel中不乏安全性,但是,在检查本地计算机中嗅探内存后我可以看到所有SOAP头在调用之后在进程的内存中休息,所以任何拥有简单工具的人都可以读取内存,我将用户名/密码发送到webservice。

我想要的是在调用webservice的方法后释放内存。我已经尝试过处理类,将类放在“using(){}”中,但信息仍保留在内存中。

有一种方法可以在使用webservice后清理SOAP标头吗?

有办法强制清理内存或垃圾收集器吗?

1 个答案:

答案 0 :(得分:-1)

您可以通过调用:

强制执行垃圾回收
GC.Collect()

当然,你通常不应该这样做。可能不会清除特定部分内存。此外,如果您正在尝试强制收集,则需要检查每个收集传递的结果,看看是否应该再次调用它。

但不要。如果有人足够聪明地检查记忆,他们可能足够聪明,可以在他们所在的短窗口内找到凭据。

是否提供了用户名密码用户?如果是这样的话 - 可能就像那里的凭证一样容易。

UPDATE:我想到了另一个想法......您可以使用一种语言来实现服务调用,在这种语言中您可以更加明确地控制内存(例如C ++)。然后你可以进行调用,并显式地写入具有凭据的内存。 Web服务调用部分在套接字中非常容易,但SSL部分非常重要。