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

C# C中调用webservice后清理SOAP头#,c#,web-services,memory,soap-client,C#,Web Services,Memory,Soap Client,我已经在源于SoapHttpClientProtocol的C#应用程序中注册了.webservice。使用Invoke()方法调用远程方法。 一切正常 我的问题是,我正在调用传递username/passw的方法,一切都是通过SSL的,chanel中不缺乏安全性,但是,在检查本地计算机在内存中的嗅探后,我可以看到所有SOAP头在调用后都在进程的内存中,因此,任何使用简单工具的人都可以读取发送到webservice的用户名/密码的内存 我想要的是在调用webservice的方法后释放内存。我已经尝

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

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

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

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


有一种方法可以强制清除内存或垃圾收集器?

您可以通过调用以下命令强制垃圾收集:

GC.Collect()
当然,你通常不应该这样做。可能不会清理内存的特定部分。此外,如果您试图强制收集,则需要检查每个收集过程的结果,以确定是否应该再次调用它

但是不要。如果某人足够聪明,能够检查记忆,那么他们可能足够聪明,能够在他们所在的短窗口中找到凭证

是否向用户提供用户名密码?如果是这样的话,那么很可能很容易在那里找到凭证


更新:我又想到了另一个想法。。。您可以使用对内存有更明确控制的语言(如C++)来实现服务调用。然后您可以进行调用,并显式地写下具有凭据的内存块。web服务调用部分在套接字中很容易实现,但是SSL部分并不简单。

实际上这是一个复杂的情况(主要是用户请求!)假设一个用户输入login/passw,就会进行web服务调用,然后另一个用户控制应用程序,此时他可以检查内存并获取调用中传递的信息,这正是我想要避免的。。。登录/passw仍在内存中。我还尝试了第二次调用,希望第一次调用被替换,但事实并非如此,两次调用都在内存中,具有清晰的登录/密码信息。。。感谢您的帮助。这就是为什么我建议“可能不会清理内存的特定部分”。我还添加了另一个建议。@Arun您有更好的主意吗?也许你错过了答案中的“但不要”部分?