Java客户端无法使用WCF服务

Java客户端无法使用WCF服务,java,wcf,Java,Wcf,我有一个WCF Web服务,它正被WCF客户端和Java使用。 net客户端工作正常,但java客户端无法通信,并抛出以下错误 <s:Fault> <faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none" xmlns="">a:ActionNotSupported</faultcode> <faultstring xml:lang="en-US" xm

我有一个WCF Web服务,它正被WCF客户端和Java使用。 net客户端工作正常,但java客户端无法通信,并抛出以下错误

<s:Fault>
  <faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none" xmlns="">a:ActionNotSupported</faultcode>
  <faultstring xml:lang="en-US" xmlns="">The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver.  Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).</faultstring>
</s:Fault>

答:行动不受支持
由于EndpointDispatcher上的ContractFilter不匹配,无法在接收器上处理具有操作“”的消息。这可能是因为合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。
我已经捕获了这两个请求,但无法找出实际问题

这是由.net客户端发送的请求

<MessageLogTraceRecord>
  <HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
    <Method>POST</Method>
    <QueryString></QueryString>
    <WebHeaders>
      <Connection>Keep-Alive</Connection>
      <Content-Length>277</Content-Length>
      <Content-Type>text/xml; charset=utf-8</Content-Type>
      <Expect>100-continue</Expect>
      <Host>devint</Host>
      <VsDebuggerCausalityData>uIDPoz4EUGTdY91Co1FESc2IENsAAAAAfpHU4m1Iok+wSxmrwkiWZ9iNzD51RjZMnpnEBbceBDcACQAA</VsDebuggerCausalityData>
      <SOAPAction>"http://tempuri.org/Test/IsPilotUser"</SOAPAction>
      <X-Forwarded-For>xx.xxx.xxx.xxx</X-Forwarded-For>
      <X-Optier-Context-Address>43143760</X-Optier-Context-Address>
    </WebHeaders>
  </HttpRequest>
  <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
      <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://service url here</To>
      <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/Test/IsPilotUser</Action>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <IsPilotUser xmlns="http://tempuri.org/">
        <UserID>AA</UserID>
      </IsPilotUser>
    </s:Body>
  </s:Envelope>
</MessageLogTraceRecord>

邮递
活命
277
text/xml;字符集=utf-8
100继续
离经叛道的
UIDPOZ4EUGTDY91CO2ESC2ENSAAAAFPHU4MIK+WSXMRWKIWZ9INZD51RJZMNPNPEBBCEBDCAQAA
"http://tempuri.org/Test/IsPilotUser"
xx.xxx.xxx.xxx
43143760
http://service 此处的url
http://tempuri.org/Test/IsPilotUser
AA
下面是java客户端生成的请求-

<MessageLogTraceRecord>
  <HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
    <Method>POST</Method>
    <QueryString></QueryString>
    <WebHeaders>
      <Cache-Control>no-cache</Cache-Control>
      <Connection>keep-alive</Connection>
      <Pragma>no-cache</Pragma>
      <Content-Length>1414</Content-Length>
      <Content-Type>text/xml; charset=utf-8</Content-Type>
      <Accept>text/xml, text/html, image/gif, image/jpeg, *; q=.2, * / *; q=.2</Accept>
      <Host>devint</Host>
      <User-Agent>Java/1.6.0_25</User-Agent>
      <SOAPAction>""</SOAPAction>
      <X-Optier-Context-Address>43526520</X-Optier-Context-Address>
    </WebHeaders>
  </HttpRequest>
  <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header">
      <hdr:RequestID xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header">287933.1372254929205.341301</hdr:RequestID>
      <hdr:Timestamp xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header">1372254929205</hdr:Timestamp>
      <hdr:Principal xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header">
        <saml:Assertion xmlns:saml="http://xml.example.com/ns/appmw/soap/1.0/saml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Issuer="PingFederate SiteMinder SOAP Connector" xsi:type="saml:AuthenticationAssertionType">
          <saml:Subject>
            <saml:NameIdentifier>
              <saml:SecurityDomain>KerberosID</saml:SecurityDomain>
              <saml:Name>None</saml:Name>
            </saml:NameIdentifier>
            <saml:SubjectConfirmation>
              <saml:AuthenticationMethod>Netegrity</saml:AuthenticationMethod>
              <saml:SubjectConfirmationData>None</saml:SubjectConfirmationData>
            </saml:SubjectConfirmation>
          </saml:Subject>
        </saml:Assertion>
      </hdr:Principal>
      <To SOAP-ENV:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://service url here</To>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
      <pf:AttributesRequest xmlns:pf="http://xml.ms.com/ns/webinfra/pingfederate/sso-attributes">
        <pf:Data>
          <pf:HumanNo></pf:HumanNo>
          <pf:Originator>None</pf:Originator>
          <pf:UniqueID>None</pf:UniqueID>
        </pf:Data>
        <pf:Attribute>
          <pf:Name>IsPilotUserResult</pf:Name>
        </pf:Attribute>
      </pf:AttributesRequest>
    </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>
</MessageLogTraceRecord>

邮递
无缓存
活命
无缓存
1414
text/xml;字符集=utf-8
text/xml、text/html、image/gif、image/jpeg、*;q=.2,*/*;q=.2
离经叛道的
Java/1.6.0_25
""
43526520
287933.1372254929205.341301
1372254929205
角质
没有一个
网络整体
没有一个
http://service 此处的url
没有一个
没有一个
IsPilotUserResult

我不熟悉Java,因此非常感谢您的帮助。

您的Java客户端发送此http头:

SOAPAction=""
当.Net发送此邮件时:

SOAPAction="http://tempuri.org/Test/IsPilotUser"
强制java客户端发送正确的值