2013-06-26 54 views
5

Tôi có một webservice WCF đang được khách hàng WCF và Java sử dụng. Máy khách .net đang hoạt động tốt nhưng máy khách java không thể giao tiếp và ném lỗi dưới đây.Máy khách Java không thể sử dụng dịch vụ WCF

<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> 

Tôi đã chụp cả hai yêu cầu nhưng không thể tìm ra vấn đề thực tế.

Đây là yêu cầu được gửi bởi ứng dụng khách .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> 

dưới đây được yêu cầu tạo ra bởi java khách hàng-

<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> 

Tôi không quen thuộc với Java vì vậy bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời

5

khách hàng java của bạn gửi tiêu đề http:

SOAPAction="" 

Trong khi Net gửi một này:

SOAPAction="http://tempuri.org/Test/IsPilotUser" 

Buộc khách hàng java để gửi giá trị chính xác.

Các vấn đề liên quan