2010-02-10 8 views
2

Я пытаюсь настроить веб-службу SAP, которая будет потребляться .NET-приложением. Думая, что это было просто, я установил Сервис в SAP для использования HTTP. Я нажимаю правой кнопкой мыши на «Ссылки на службы» в Дереве проектов .NET и выбираю «Добавить ссылку на службу ...», введите URL-адрес WSDL, локально размещенный на наших серверах, и нажмите «Перейти», затем выберите конечную точку, затем нажмите «ОК» ,Веб-служба, размещенная SAP и потребляемая .NET-приложением

Я открыл файл app.config, чтобы найти, что он говорит <httpsTransport> вместо <httpTransport>, хотя я настроил его на использование HTTP.

<system.serviceModel> 
     <bindings> 
      <customBinding> 
       <binding name="ZHR_RECRUITNEW1"> 
        <!--WsdlImporter encountered unrecognized policy assertions in ServiceDescription 'urn:sap-com:document:sap:soap:functions:mc-style':--> 
        <!-- <wsdl:binding name='ZHR_RECRUITNEW'> --> 
        <!--  <wsaw:UsingAddressing xmlns:wsaw="http://schemas.xmlsoap.org/ws/2004/08/addressing">..</wsaw:UsingAddressing> --> 
        <!--  <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> --> 
        <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
         messageVersion="Soap11" writeEncoding="utf-8"> 
         <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
          maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
        </textMessageEncoding> 
        <httpsTransport manualAddressing="false" maxBufferPoolSize="524288" 
         maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" 
         bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
         keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" 
         realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" 
         useDefaultWebProxy="true" requireClientCertificate="false" /> 
       </binding> 
      </customBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://<host>:8000/sap/bc/srt/rfc/sap/zhr_recruitnew/300/zhr_recruitnew/zhr_recruitnew" 
       binding="customBinding" bindingConfiguration="ZHR_RECRUITNEW1" 
       contract="ServiceReference2.ZHR_RECRUITNEW" name="ZHR_RECRUITNEW1" /> 
     </client> 
    </system.serviceModel> 

Таким образом, для того, чтобы работать «правильно», я должен переименовать этот XML-тег из httpsTransport в HttpTransport и удалить атрибут requireClientCertificate = «ложных»

Итак, я иду в SAP, чтобы настроить служба использовать HTTPS, а затем вернуться к проекту .NET и повторно добавить эту услугу, чтобы получить это сообщение об ошибке:

Could not establish trust relationship for the SSL/TLS secure channel with authority '<host>:<portnumber>'. 

Я любопытно, что комментарий «WsdlImporter столкнулись ли непризнанные политики утверждения "в файле конфигурации необходимо что-либо сделать с этой информацией g неверно из SAP

+0

Я сомневаюсь, что Visual Studio просто решил наобум использовать SSL. Если вы проверите, я верю, что вы обнаружите, что что-то вынудило SSL. Возможно, SAP сделала перенаправление с http на https. –

ответ

2

Не удалось установить доверительные отношения для защищенного канала SSL/TLS с полномочиями «:».

Вы получаете это, потому что сертификат поставщика услуг не находится в ваших доверенных корневых сертификатах локально.

Вы можете добавить это в ваш код (прежде чем что-либо еще), чтобы игнорировать его:

System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); 

 Смежные вопросы

  • Нет связанных вопросов^_^