47 messaggi dal 27 ottobre 2014
.. se il messaggio SOAP e' gia' pronto ti conviene inserire la firma (senza riscrivere l'elemento Signature altrimenti e' facile invalidare la firma) e sostituirlo a quello generato da .net nel BeforeSendRequest
39 messaggi dal 17 novembre 2011
E' quello che sto cercando di fare Enzo ma non ho capito quale sia il modo migliore. Sto cercando in pratica di estrapolare il body attraverso la deserializzazione del messaggio che caricato ma non ho trovato un tipo effettivamente corrispondente. Ho capito invece come rimpiazzare l'header, ma se non riesco ad estrapolare il body trasformandolo in un oggetto non posso andarte avanti. In via alternativa esiste la possibilità di inviare il tutto senza fare la chiamata al metodo ? Grazie se potrai aiutarmi.
47 messaggi dal 27 ottobre 2014
... ma perché devi estrapolare il body? se il messaggio è già pronto devi solo sottoporlo a firma con il riferimento del Timestamp, ed aggiungere l'elemento Security che ti restituisce SignedXml.
39 messaggi dal 17 novembre 2011
ti spiego, io ho un file di testo pronto ma privo di firma che mi viene inviato da un altra applicazione, dopo di che io lo firmo (e qui non dovrei avere problemi). A questo punto quello che vorrei e caricarlo in qualche modo ed inviarlo. Penso di necessario estrarre il body in quanto la chiamata al metodo getPrescrizioneIdentificata richiede i dati specifici del messaggio (identificativoRicetta, datiApplicativo, ...). Se esiste un altro modo per me va benissimo. Ribadisco, io ho un file xml prodotto da un mio collega con un altra applicazione, io applico la firma digitale e devo fare l'invio solo per il metodo suddetto (getPrescrizioneIdentificata). Come si può fare ?
47 messaggi dal 27 ottobre 2014
forse non capisco ... se il messaggio SOAP è già pronto con tutti gli elementi strutturati in maniera corretta, puoi mettere qualsiasi valore nei campi richiesti dal getPrescrizioneIdentificata; nel BeforeSendRequest avrai un XML inesatto ed incompleto, lo sostituisci con quello ricevuto e firmato e dovresti aver risolto ...
39 messaggi dal 17 novembre 2011
ora sto cercando di fare questo, mi puoi dare un suggerimento sul come ???

ho questo errore :

Il lettore del corpo del messaggio è in ReadState 'Closed' e non può essere utilizzato
Modificato da cosimo.cinefra il 05 aprile 2016 13.00 -
47 messaggi dal 27 ottobre 2014
... purtroppo non ho percorso questa strada (ci ho provato, tra i vari tentativi effettuati), ma poi ho raggiunto il risultato con l'aggiunta dell'elemento Security al SOAP message creato dal ServiceReference, come spiegato in una delle mia email precedenti.

In quale contesto ricevi il messaggio di errore specifico?
39 messaggi dal 17 novembre 2011
Ciao Enzo, riepilogo la situazione.

Carico il messaggio dal file creato da una applicazione diversa dalla mia.
Firmo il messaggio correttamente (almeno presumo)
Attraverso l'evento che mi hai suggerito sostituisco l'header prodotto automaticamente con quello del messaggio caricato.
Riesco a leggere i dati del body e a passarli correttamente alla chiamata del servizio.

OTTENGO IL SEGUENTE ERRORE: The creation time is ahead of the current time.

Sembra che sia necessario cambiare il parametro MaxClockSkew che però sembra impossibile raggiungere in quanto è disponibile solo per le connessioni WSHttpBinding e non con quelle BasicHttpsBinding.


BasicHttpsBinding b = new BasicHttpsBinding();
// Binding b = CreateCustomBinding(TimeSpan.FromMinutes(5));
EndpointAddress ea = new EndpointAddress(UrlService);

CVPClient m_cvp = new CVPClient(b, ea);

SecurityBehaviour.FileName = xmlFileInput;
/* per modificare header del messaggio */
SecurityBehaviour SecurityInterceptor = new SecurityBehaviour();

m_cvp.Endpoint.EndpointBehaviors.Add(SecurityInterceptor);

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return true; };

var result = m_cvp.getPrescrizioneIdentificata(temp.datiOperatore,temp.datiApplicativo,temp.codiceFiscale,
temp.codiceSanitario, temp.identificativoRicetta, temp.versione, temp.tipoOperazione);


Se puoi aiutarmi a capire cosa devo fare?? (Lo psichiatra ha una lunga coda di attesa).

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.