通过.net使用SAP web服务
我对web服务还很陌生,所以我正在与一些奇怪的行为作斗争。在通过VS2010导入WSDL xml文件之后,我得到了这些无法识别的策略断言。WSDL文件是由SAP团队创建的,所以我不确定他们到底做了什么 当我忽略这些命令并尝试使用web服务时,我得到以下期望: 提供的URI方案“https”无效;应为“http”。 我知道这个错误消息意味着我有一个与URI定义的不同的传输逻辑,但是我不确定我是否应该对此做些什么或者更新WSDL文件通过.net使用SAP web服务,.net,xml,web-services,wsdl,uri,.net,Xml,Web Services,Wsdl,Uri,我对web服务还很陌生,所以我正在与一些奇怪的行为作斗争。在通过VS2010导入WSDL xml文件之后,我得到了这些无法识别的策略断言。WSDL文件是由SAP团队创建的,所以我不确定他们到底做了什么 当我忽略这些命令并尝试使用web服务时,我得到以下期望: 提供的URI方案“https”无效;应为“http”。 我知道这个错误消息意味着我有一个与URI定义的不同的传输逻辑,但是我不确定我是否应该对此做些什么或者更新WSDL文件 <system.serviceModel> &
<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>
您的端点具有
http
方案,但绑定仅定义httpsTransport
。您可以尝试将绑定更改为httpTransport
,或者查看您的端点是否也可以使用https
协议。请尝试使用TransportCredentialOnly
作为安全模式,该模式不需要https协议(同时需要提供用户名和密码)
谢谢我已将其更改为httpTransport并切换到authenticationScheme=“Basic”,但现在我得到:{“服务器没有提供有意义的回复;这可能是由于契约不匹配、会话过早关闭或内部服务器错误造成的。”}您找到了解决方案吗?
<bindings>
<basicHttpBinding>
<binding name="NewBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
sapService.ClientCredentials.UserName.UserName = "UserName";
sapService.ClientCredentials.UserName.Password = "Password";