我正在尝试从SAP上的.NET环境中使用webservices。 但是当我尝试在SAP SOAMANAGER中创建逻辑端口时,我收到错误:
SRT-Framework-Ausnahme:Initialer Wert“消费者上下文表” Methode IF_SRT_WSP_CONFIG_REGISTRY~CREATE_CONTEXTS_FROM_WS der Klasse CL_SRT_WSP_CONFIG_REGISTRY
WSDL-Analyzer显示 2个不支持的元素:
<http:BasicAuthentication xmlns:http="http://schemas.microsoft.com/ws/06/2004/policy/http" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
和
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><wsp:Policy xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xml:base="https://external-server.com/Webservice.svc?singlewsdl"><wsp:ExactlyOne><wsp:All><sp:TransportToken><wsp:Policy xml:base="https://external-server.com/Webservice.svc?singlewsdl"><wsp:ExactlyOne><wsp:All><sp:HttpsToken RequireClientCertificate="false"/></wsp:All></wsp:ExactlyOne></wsp:Policy></sp:TransportToken><sp:AlgorithmSuite><wsp:Policy xml:base="https://external-server.com/Webservice.svc?singlewsdl"><wsp:ExactlyOne><wsp:All><sp:Basic256/></wsp:All></wsp:ExactlyOne></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy xml:base="https://external-server.com/Webservice.svc?singlewsdl"><wsp:ExactlyOne><wsp:All><sp:Strict/></wsp:All></wsp:ExactlyOne></wsp:Policy></sp:Layout></wsp:All></wsp:ExactlyOne></wsp:Policy></sp:TransportBinding>
所以我详细查看了WSDL文件,删除了wsp:All标签的内容,即:
<http:BasicAuthentication xmlns:http="http://schemas.microsoft.com/ws/06/2004/policy/http"/>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
从已编辑的离线WDSL文件创建逻辑端口现在可以使用!所以我猜,问题起源于BasicAuthentication和TransportBinding标签。
当然原始的外部WDSL文件必须进行调整。
为了生成SAP兼容的WSDL文件,我需要在.NET环境中进行哪些更改?我是否必须调整web.config文件?