.NET命名冲突问题中的SAP Web服务参考

MIk*_*ode 4 .net c# sap web-services

我尝试使用SAP ws时,我遇到一个.net问题,元素系统导致此错误

  error CS0120: An object reference is required for the nonstatic field, method, or property 'Bapiret2.System'
Run Code Online (Sandbox Code Playgroud)

他们是这里描述的解决方案,但我想找到不需要更改WSDL的解决方案

http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/04/17/system-namespace-conflict-in-sap-web-services.aspx

或这个 http://ddkonline.blogspot.com/2009/09/sap-to-microsoft-net-integration-fixes.html

您对此有任何经验以及如何解决?

谢谢miki

Wei*_*eng 7

由于此问题是由 .NET 和 SAP 中的命名冲突引起的,是否可以在不更改 SAP 配置的情况下解决此问题?

在 Reference.cs 中为 System.XML 添加一个别名,如下所示

using SysXml = System.Xml;
Run Code Online (Sandbox Code Playgroud)

然后,将所有报错的System.Xml替换为“SysXml”如下(请注意添加服务后“SysXml”这个词原来是“System.Xml”,导致了这个问题)

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=SysXml.Schema.XmlSchemaForm.Unqualified)]
public string Type {
    get {
        return this.typeField;

    set {
        this.typeField = value;
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

问题是因为Windows和BAPI中都有系统名称空间。这可以通过在给出上述错误的所有调用之前添加global ::来解决。这不涉及编辑WSDL。

参考:对您上面提到的页面之一发表评论,然后链接该评论所引用的页面