2012-07-04 128 views
1

我使用firstdata webservice API。我使用C#客戶端調用帶WCF的firstdata webservice API。該HTTP請求未經授權,客戶端身份驗證方案'Anonymous'

但顯示錯誤消息:

"System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client 

authentication scheme 'Anonymous'. The authentication header received from the server was ''. ---> System.Net.WebException: 

The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) --- End 

of inner exception stack trace --- Server stack trace: at 

System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest request, HttpWebResponse response, 

WebException responseException, HttpChannelFactory factory) at 

System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding) at 

System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) at 

System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) at 

System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) at 

System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] 

ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage 

methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage 

retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at 

com.firstdata.globalgatewaye4.api.ServiceSoap.SendAndCommit(SendAndCommitRequest request) at 

com.firstdata.globalgatewaye4.api.ServiceSoapClient.com.firstdata.globalgatewaye4.api.ServiceSoap.SendAndCommit 

(SendAndCommitRequest request) at com.firstdata.globalgatewaye4.api.ServiceSoapClient.SendAndCommit(Transaction 

SendAndCommitSource)" 

我下面的web.config信息:

<behaviors> 
     <endpointBehaviors> 
      <behavior name="FDGGBehavior"> 
       <clientCredentials> 
        <clientCertificate findValue="WS1909642825._.1" storeLocation="LocalMachine" x509FindType="FindBySubjectName" storeName="TrustedPeople" /> 
        <serviceCertificate> 
         <authentication certificateValidationMode="PeerTrust" /> 
        </serviceCertificate> 
       </clientCredentials> 
      </behavior> 
     </endpointBehaviors> 
    </behaviors> 
<binding name="ServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00" 
      receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" 
      bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
       maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="TransportWithMessageCredential"> 
        <transport clientCredentialType="Certificate" proxyCredentialType="Ntlm" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 
      </binding> 
<endpoint address="https://api.globalgatewaye4.firstdata.com/transaction/v11" 
     binding="basicHttpBinding" bindingConfiguration="ServiceSoap" 
     contract="com.firstdata.globalgatewaye4.api.ServiceSoap" name="ServiceSoap" behaviorConfiguration="FDGGBehavior" /> 

如何解決問題?

回答

3

有同樣的問題。 請檢查您是否正確使用GatewayID密碼。請注意,生成密碼後,您需要點擊更新按鈕。 另外我不使用行爲配置

<behaviors> 
    <endpointBehaviors> 
     <behavior name="FDGGBehavior"> 
      <clientCredentials> 
       <clientCertificate findValue="WS1909642825._.1" 
        storeLocation="LocalMachine" 
        x509FindType="FindBySubjectName" 
        storeName="TrustedPeople" /> 
       <serviceCertificate> 
        <authentication certificateValidationMode="PeerTrust" /> 
       </serviceCertificate> 
      </clientCredentials> 
     </behavior> 
    </endpointBehaviors> 
</behaviors> 
相關問題