如何实现SoapHttpClientProtocol

时间:2009-12-22 15:19:04

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

由于this问题告诉我SoapHttpClientProtocol不是线程安全的。而且,我的真实测试告诉我这是真的,因为我的SoapHeader属性在调用之间不断混淆。有没有办法确保我可以跨线程使用它并保持我的属性正确?并确保我没有遇到一个线程的问题中给出的例子,认为连接是打开的,当另一个线程关闭它时?我的请求发出后,是否需要担心soap标头值?在请求发出之前,我如何验证属性是否如我所设置的那样?

1 个答案:

答案 0 :(得分:1)

我要问的第一件事是,如果你不使它多线程,你的服务是否正常工作。如果您进行后续呼叫,它们是否都能正常工作并为您提供所需的结果?如果没有,那么服务器端就有可能出现问题。

要查看您发送的内容,您可以在发送之前序列化soap消息。确保它正确生成。

我的工作阻止了对很多网站的访问,但如果我没记错的话,CodeProject有一些例子。

如果单个线程有效,则将序列化层放在适当的位置并让它在多线程场景中将文件写入磁盘。然后,您可以通过代码认为发送的内容来查看哪些有效,哪些无效。

由于您尝试建立多个连接,而您可能将端点视为一个值,有点像在NAT防火墙后面,因此服务器很可能会混淆您的呼叫。这意味着您可能正在获取连接,但其他一个线程首先获取其消息。如果是这种情况,您可以尝试在其自己的应用程序域中旋转每个线程,看看它是否为您做了什么。并不是说它会起作用,但不能确定你还可以尝试其他什么。