Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何声明WCF服务正在使用强制SOAP头?_Wcf_Soap_Soapheader - Fatal编程技术网

如何声明WCF服务正在使用强制SOAP头?

如何声明WCF服务正在使用强制SOAP头?,wcf,soap,soapheader,Wcf,Soap,Soapheader,我有一个WCF服务,它使用一些定制的SOAP头。 我设法传递了头文件-但是我如何声明它们是强制性的,从而迫使客户机在每个请求中传递它们呢 谢谢 您需要一个代码来验证您这边是否存在标题。您还需要一个将自定义头添加到WSDL的代码,以便所有客户机都知道这个头 这两部分都可以通过MessageContract实现,在MessageContract中您将定义头和主体。如果您使用单一契约作为所有消息的基础,它应该可以工作,但您必须在每个操作中验证头 您还可以将与头相关的代码移动到自定义行为,并在自定义消息

我有一个WCF服务,它使用一些定制的SOAP头。 我设法传递了头文件-但是我如何声明它们是强制性的,从而迫使客户机在每个请求中传递它们呢


谢谢

您需要一个代码来验证您这边是否存在标题。您还需要一个将自定义头添加到WSDL的代码,以便所有客户机都知道这个头

这两部分都可以通过MessageContract实现,在MessageContract中您将定义头和主体。如果您使用单一契约作为所有消息的基础,它应该可以工作,但您必须在每个操作中验证头


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

MessageContract很好,但限制了我的API自由,因为只允许一个参数,而且我需要为每个API创建一个自定义类,因为它们都有不同的签名。你的另一个建议是我现在所做的,只是它没有给客户端任何指示,表明服务需要SOAP头。你的最后一个链接看起来是最后一件要做的事情-除非我会收到一个答案,以更可靠和优雅的方式解决这个问题,我会把时间花在你提到的博客上MessageContract并没有将API限制为单个参数。它仅在单个类中封装所有参数。如果您的头是WSDL的一部分,您将得到客户端指示。您必须始终在您这边验证是否传递了头,因为您无法确保客户端发送它们。您是正确的,我的意思是,如果我的所有API都有不同的签名,但都必须接收相同的SOAP头,这是不方便的。在这种情况下,我必须为每个API创建自定义类