如何修复“ XML中缺少属性名称空间声明”

时间:2019-05-14 14:20:53

标签: c# soap-client wsdl.exe

我已经使用Visual Studio wsdl.exe工具从提供的wsdl和xsd文件开始自动生成了C#类。 我想使用此客户端调用SII在意大利创建的Java SOAP服务(Servizio Informativo integrato)。 我收到此错误。

System.Web.Services.Protocols.SoapHeaderException: 
'InRequestHandler[pdcInterfacciaServiziSII]: 
Il MessaggioSII fornito all'interfaccia Servizi SII non risulta conforme alla struttura standard: 
Eccezione SII_EX_ERROR con codice [SII_AU_004] - EccezioneValidazioneProtocollo, 
descrizione errore: MessaggioSII ; MessaggioSII without attribute namespace declaration 
http://www.acquirenteunico.it/schemas/2010/SII_AU/MessaggioSII'

翻译: 提供给SII服务接口的MessaggioSII与标准结构不匹配:

  

异常SII_EX_ERROR,代码为[SII_AU_004]-   ProtocolValidationException,错误描述:MessaggioSII;   没有属性名称空间声明的MessaggioSII   http://www.acquirenteunico.it/schemas/2010/SII_AU/MessaggioSII'

我还有调用相同SOAP服务的Java代码,它运行良好。

这是wsdl.exe工具自动生成的C#代码的相关部分。这段代码因上述错误而失败。

public VerificaInteroperabilitaPdCService() {
    this.Url = "http://127.0.0.1:8080/openspcoop2/pdc/PD";
}

public event startCompletedEventHandler startCompleted;


[System.Web.Services.Protocols.SoapRpcMethodAttribute("start", RequestNamespace="http://www.acquirenteunico.it/schemas/2010/SII_AU/VerificaInteroperabilitaPdC", ResponseNamespace="http://www.acquirenteunico.it/schemas/2010/SII_AU/VerificaInteroperabilitaPdC", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
[return: System.Xml.Serialization.XmlElementAttribute("MessaggioSII")]
public StartResponseMessaggioSIIType start(StartMessaggioSIIType MessaggioSII) {
    object[] results = this.Invoke("start", new object[] {
                MessaggioSII});
    return ((StartResponseMessaggioSIIType)(results[0]));
}


public System.IAsyncResult Beginstart(StartMessaggioSIIType MessaggioSII, System.AsyncCallback callback, object asyncState) {
    return this.BeginInvoke("start", new object[] {
                MessaggioSII}, callback, asyncState);
}

public StartResponseMessaggioSIIType Endstart(System.IAsyncResult asyncResult) {
    object[] results = this.EndInvoke(asyncResult);
    return ((StartResponseMessaggioSIIType)(results[0]));
}

SOAP客户端应该能够连接到SOAP服务,发送问题并获得答案

0 个答案:

没有答案