如何更改.NET WSDL以使其与SAP兼容?

如何更改.NET WSDL以使其与SAP兼容?,.net,web-services,wcf,wsdl,sap,.net,Web Services,Wcf,Wsdl,Sap,我正在尝试使用SAP上.NET环境中的Web服务。 但是,当我尝试在SAP SOAMANAGER中创建逻辑端口时,出现了以下错误: SRT框架Ausnahme:初始值设定项Wert中的“消费者上下文表” 从Klasse创建上下文的方法 CL_SRT_WSP_配置_注册表 WSDL分析器显示2个不受支持的元素: <http:BasicAuthentication xmlns:http="http://schemas.microsoft.com/ws/06/2004/policy/http"

我正在尝试使用SAP上.NET环境中的Web服务。 但是,当我尝试在SAP SOAMANAGER中创建逻辑端口时,出现了以下错误:

SRT框架Ausnahme:初始值设定项Wert中的“消费者上下文表” 从Klasse创建上下文的方法 CL_SRT_WSP_配置_注册表

WSDL分析器显示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"/>


因此,我详细查看了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文件创建逻辑端口现在可以正常工作了!所以我想,问题的根源在于基本身份验证和TransportBinding标签的设计

当然,必须调整原始外部WDSL文件


为了生成与SAP兼容的WSDL文件,我必须在.NET环境中更改什么?我必须修改web.config文件吗?

ABAP web服务客户端功能支持的WSDL元素有一些限制。有一些注释记录了支持和不支持的内容:

  • -ABAP代理生成支持的XML架构
  • -ABAP WSDL处理中的限制和常见问题
在这种情况下,您有两种解决方案:

  • 如果可能,请让web服务发布者修改其服务以删除任何不受支持的元素。在大多数情况下,这是不可能的
  • 修改WSDL以删除任何不受支持的元素。不幸的是,这可能非常棘手,并且每次WSDL更改时都需要执行(在第一次更改后使用diff可能是可能的,但可能会带来更多麻烦)

  • 只需在服务中使用
    basicHttpBinding
    。它当前使用的是
    wsHttpBinding
    @johnsaunder,而我当前使用的是basicHttpsBinding。之所以选择此选项,是因为Web服务应该只能通过HTTPS进行通信。我是否可以使用另一个绑定,例如您建议的basicHttpBinding并通过HTTPS进行通信?@johnsaunds我在我的Web.config中将
    basicHttpBinding
    替换为
    basicHttpBinding
    。通过HTTPS调用WDSL文件仍然有效,但另一方面,它并没有解决我的问题。
                <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>