2013-04-09 87 views
0

我對Web服務很陌生,所以我正在與一些奇怪的行爲作鬥爭。在通過VS2010導入WSDL xml文件後,我得到了這些無法識別的策略斷言。 WSDL文件是由SAP團隊創建的,所以我不確定他們到底做了什麼。通過.Net使用SAP Web服務

當我忽略這些評論嘗試使用web服務時,我得到這個期待: 提供的URI方案'https'是無效的;預計'http'。

我知道這個錯誤消息意味着我有一個不同的傳輸邏輯作爲URI定義,但我不知道如果我應該做些什麼或更新WSDL文件。

<system.serviceModel> 
<bindings> 
    <customBinding> 
     <binding name="binding"> 
      <!-- WsdlImporter encountered unrecognized policy assertions in ServiceDescription 'urn:sap-com:document:sap:soap:functions:mc-style': --> 
      <!-- <wsdl:binding name='binding'> --> 
      <!--  <saptrnbnd:OptimizedXMLTransfer xmlns:saptrnbnd="http://www.sap.com/webas/710/soap/features/transportbinding/">..</saptrnbnd:OptimizedXMLTransfer> --> 
      <!--  <sapattahnd:Enabled xmlns:sapattahnd="http://www.sap.com/710/features/attachment/">..</sapattahnd:Enabled> --> 
      <mtomMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
       messageVersion="Soap11WSAddressing10" maxBufferSize="65536" 
       writeEncoding="utf-8"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      </mtomMessageEncoding> 
      <httpsTransport manualAddressing="false" maxBufferPoolSize="524288" 
       maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" 
       bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard" 
       keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" 
       realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" 
       useDefaultWebProxy="true" requireClientCertificate="false" /> 
     </binding> 
     <binding name="binding_SOAP12"> 
      <!-- WsdlImporter encountered unrecognized policy assertions in ServiceDescription 'urn:sap-com:document:sap:soap:functions:mc-style': --> 
      <!-- <wsdl:binding name='binding_SOAP12'> --> 
      <!--  <saptrnbnd:OptimizedXMLTransfer xmlns:saptrnbnd="http://www.sap.com/webas/710/soap/features/transportbinding/">..</saptrnbnd:OptimizedXMLTransfer> --> 
      <!--  <sapattahnd:Enabled xmlns:sapattahnd="http://www.sap.com/710/features/attachment/">..</sapattahnd:Enabled> --> 
      <mtomMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
       messageVersion="Default" maxBufferSize="65536" writeEncoding="utf-8"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      </mtomMessageEncoding> 
      <httpsTransport manualAddressing="false" maxBufferPoolSize="524288" 
       maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" 
       bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard" 
       keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" 
       realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" 
       useDefaultWebProxy="true" requireClientCertificate="false" /> 
     </binding> 
    </customBinding> 
</bindings> 
<client> 
    <endpoint address="http://{HOSTNAME}/sap/bc/srt/rfc/sap/zicert_kunden_auslesen/010/005056a5007b1ee2a5da43a20303be2b/binding" 
     binding="customBinding" bindingConfiguration="binding" contract="ServiceReference.ZICERT_KUNDEN_AUSLESEN" 
     name="binding" /> 
    <endpoint address="http://{HOSTNAME}/sap/bc/srt/rfc/sap/zicert_kunden_auslesen/010/005056a5007b1ee2a5da43a20303be2b/binding" 
     binding="customBinding" bindingConfiguration="binding_SOAP12" 
     contract="ServiceReference.ZICERT_KUNDEN_AUSLESEN" name="binding_SOAP12" /> 
</client> 

+0

還是沒有解決方案? – apacay 2014-07-03 21:19:19

+0

您是否找到了解決方案? – Carlos 2015-01-02 19:08:48

回答

1

您的端點有http方案,但結合只定義httpsTransport。您可以嘗試將綁定更改爲httpTransport,或者查看您的端點是否也可用於https協議。

+0

謝謝。我已將其更改爲** httpTransport **並切換到** authenticationScheme =「Basic」**,但現在我得到:** {「服務器沒有提供有意義的答覆;這可能是由於合同不匹配,會話過早關閉或內部服務器錯誤。「} ** – Marcin 2013-04-09 07:44:43

0

請嘗試使用TransportCredentialOnly作爲安全模式,不需要使用HTTPS協議(而您需要提供用戶名和密碼)。

<bindings> 
    <basicHttpBinding> 
    <binding name="NewBinding"> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

您可以在下面的.NET代碼的用戶名和密碼:

sapService.ClientCredentials.UserName.UserName = "UserName"; 
sapService.ClientCredentials.UserName.Password = "Password";