2011-06-15 46 views

回答

0

你需要一个代码来验证你身边是否有头文件。您还需要一个将您的自定义标题添加到WSDL的代码,以便所有客户端都了解此标题。

这两个部分都可以通过MessageContract来实现,您将在其中定义标题和正文。如果您使用单个合同作为所有消息的基础,它应该可以工作,但是您必须在每个操作中验证标头。

您还可以将与标题相关的代码移动到自定义行为并在自定义消息检查器中添加/验证标头。在这种情况下,您还必须手动将头文件的描述添加到WSDL。 This blog article描述了整个过程。

+0

MessageContract很好,但限制了我的API自由度,因为只允许一个参数,我需要为每个API制作一个自定义类(因为它们都有不同的签名)。您的其他建议是我现在所做的只是它不会给客户端任何指示该服务需要SOAP标头。 – Alon1980 2011-06-15 12:37:22

+0

您的最后一个链接看起来是最后一件事情 - 所以除非我会以更强大和更优雅的方式得到解决此问题的答案,否则我会将时间投入您提到的博客 – Alon1980 2011-06-15 12:39:02

+0

MessageContract不会限制API的单一参数。它只包含单个类中的所有参数。如果您的头文件将成为WSDL的一部分,您将获得客户端指示。您始终必须验证您的身边是否已通过标题,因为您无法确保客户端发送标题。 – 2011-06-15 12:49:10