对某些WCF方法的SOAP请求不起作用

时间:2013-09-19 12:28:57

标签: c# php wcf soap action

PHP-client采用我的WCF服务的WSDL。 Thare是两种方法(例如) - GetEntityTypeList()和GetPermissions(...)。 PHP客户端发送两个SOAP请求。

对于GetEntityTypeList():

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mywork.com/BusinessEntity" xmlns:ns2="http://www.mywork.com">
  <SOAP-ENV:Header>
    <ApplicationServer>
      <SessionId>25872680517</SessionId>
    </ApplicationServer>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <ns1:GetEntityTypeList/>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

对于GetPermissions(...):

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mywork.com/BusinessEntity" xmlns:ns2="http://www.mywork.com">
  <SOAP-ENV:Header>
    <ApplicationServer>
      <SessionId>25872680517</SessionId>
    </ApplicationServer>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <ns1:GetPermissions>
      <ns1:type>1</ns1:type>
      <ns1:id>1</ns1:id>
    </ns1:GetPermissions>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

然后WCF服务器捕获第一个请求:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mywork.com/BusinessEntity" xmlns:ns2="http://www.mywork.com">
  <SOAP-ENV:Header>
    <ApplicationServer xmlns="http://www.mywork.com/">
      <SessionId>25872680517</SessionId>
    </ApplicationServer>
    <To SOAP-ENV:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://10.128.240.23:55564/BusinessEntityServer/IEntityType</To>
    <Action SOAP-ENV:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.mywork.com/BusinessEntity/IEntityType/GetEntityTypeList</Action>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <ns1:GetEntityTypeList />
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

如您所见,还有两个额外的块 - 操作。并且第一个请求正常。 但第二个请求没有到达服务器。并且PHP客户端捕获异常:

由于EndpointDispatcher上的ContractFilter不匹配,无法在接收方处理带有操作“http://www.mywork.com/BusinessEntity/IPermissionEx/GetPermissions”的消息。这可能是由于合同不匹配(发送方与接收方之间的操作不匹配)或发送方与接收方之间的绑定/安全性不匹配。检查发件人和收件人是否具有相同的合同和相同的约束(包括安全要求,例如邮件,传输,无)。

为什么?

如有必要,我将展示WSDL。

0 个答案:

没有答案