在 C 中更改 SOAP 服务条目 xml 的默认命名空间#

Change the default namespace of a SOAP service entry xml in C#

提问人:Roberto Villavicencio 提问时间:9/26/2023 最后编辑:marc_sRoberto Villavicencio 更新时间:9/26/2023 访问量:28

问:

我遇到的问题是,在提供程序提供的xml中,命名空间如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<pgim:Document xmlns:pgim="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.06.031"   
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.06.031 pacs.008.031.xsd ">

而我在运行服务时看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

我有一个 soap 服务,我使用 VS 终端的 XSD 工具生成了 soap 服务,我没有完整包含代码的初始部分,因为它很长:

using System.Xml.Serialization;

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08.031")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08.031", IsNullable = false)]
public partial class Document : System.Web.Services.Protocols.SoapHeader
{
    private HeaderData headerField;
    private FIToFICustomerCreditTransferV06 fIToFICstmrCdtTrfField;

    /// <remarks/>
    public HeaderData Header {
        get {
            return this.headerField;
        }
        set {
            this.headerField = value;
        }
    }
    
    /// <remarks/>
    public FIToFICustomerCreditTransferV06 FIToFICstmrCdtTrf {
        get {
            return this.fIToFICstmrCdtTrfField;
        }
        set {
            this.fIToFICstmrCdtTrfField = value;
        }
    }

}

然后我将其用作创建的 asmx 服务中的输入数据,如下所示:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
// [System.Web.Script.Services.ScriptService]
public class Transfer: System.Web.Services.WebService
{
    public ModelTransfer.Document entry = new ModelTransfer.Document();
    
    [WebMethod]
    [SoapHeader("entry")]
    public ModelTransfer.Output Consulta()
    {
        ModelTransfer.Output output = new ModelTransfer.Output();

        return output;
    }
}
C# XML SOAP 命名空间 ASMX

评论


答: 暂无答案