Как исправить «Отсутствует объявление пространства имен атрибута в XML» - PullRequest
1 голос
/ 14 мая 2019

Я автоматически сгенерировал класс C # с помощью инструмента visual studio wsdl.exe, начиная с поставляемых файлов wsdl и xsd. Я хочу использовать этот клиент для вызова службы Java SOAP в Италии, созданной SII (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'

Перевод: MessaggioSII, предоставляемый для интерфейса служб SII, не соответствует стандартной структуре:

Исключение SII_EX_ERROR с кодом [SII_AU_004] - ProtocolValidationException, Описание ошибки: MessaggioSII; MessaggioSII без объявления пространства имен атрибута http://www.acquirenteunico.it/schemas/2010/SII_AU/MessaggioSII'

У меня также есть Java-код, который вызывает тот же сервис SOAP, и он отлично работает.

Это соответствующая часть кода C #, автоматически генерируемая утилитой wsdl.exe. Этот код завершается с ошибкой, написанной выше.

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, отправлять вопрос и получать ответ

...