menu di navigazione del network

Url Endpoint


(Tumbarello) #1

Buonasera a tutti,

sto richiedendo l’accreditamento SDICoop dopo aver messo su un servizio WCF su IIS 10 / Windows server 2016.

Vi chiedo se nell’url dell’endpoint includete il suffisso …?wsdl

Es https://miodominio.com/wsSDI.Services.TrasmissioneFattureTEST.svc oppure
https://miodominio.com/wsSDI.Services.TrasmissioneFattureTEST.svc?wsdl

Grazie anticipatamente


(Bruno) #2

io l’ho fatto pulito https://miodominio/sdi-trasmetti e basta


(Tumbarello) #3

E’ l’endpoint di un servizio WCF ?

Grazie


(Bruno) #4

si
devi usare WCF, .NET Core non è usabile per via dell’Mtom usato dal loro vecchio Java


(Marco Cappelli) #5

No, noi abbiamo usato htts… .asmx


(Bruno Mandarà) #6

@Marco_Cappelli ciao anchio sto utilizzando asmx , ma quando invio la fattura e poi devo ricevere il file di notifica dall’agenzia dell’entrate ricevo questo errore:org.apache.axis2.AxisFault: HTTP ( 405 ) Method Not Allowed address : https://26.2.162.231:80

io come endpoint ho messo semplicemente www.miosito.it, come fa l’agenzia dell’entrate a chiamare il mio servizio asmx?


(Bruno) #7

hai messo come endpoint SOLO www.miosito.it ? Sei spacciato, uno lo puoi gestire con url rewrite, ma come fai a differenziare i vari servizi? :slight_smile:


(Marco Cappelli) #9

Purtroppo va usato:
htts://tuosito/tuowebservicetrasmissione.asmx
htts://tuosito/tuowebservicericezione.asmx


(Bruno Mandarà) #10

ho fatto per adesso con il rewrite, infatti finisco di implementare tutta la logica poi rifaccio l’accreditamento per mettere gli endpoint giusti


(Bruno Mandarà) #11

ma se metto solo htts://tuosito/tuowebservicetrasmissione
htts://tuosito/tuowebservicericezione

senza l’estensione poi devo fare il rewrite giusto?


(Marco Cappelli) #12

Mettere anche l’estensione?


(Bruno Mandarà) #13

bhe vorrei evitare di mettere l’estensione, perche se poi un giorno vorro cambiare asmx e fare delle api diverse posso essere flessibile con il routing ma se metto l’estensione sono costretto a utilizzare per forza asmx


(Bruno) #14

evita per carità…
a parte che eviterei di usare ASMX che tanto già WCF è vecchio, comunque gli url lasciali “liberi” e fai rewriting per finire dove vuoi tu, così sei libero…


(Bruno Mandarà) #15

si infatti, volevo utilizzare asp net core ma mtom non sono gestiti, allora volevo utilizzare asp net webapi , però ho adottato asmx perche con le soap si sono interfacciati benissimo, voi quale tecnologia utilizzate o consigliate?


(Bruno) #16

anche io avevo provato .NET Core e poi ho buttato tutto per via dell’MTOM. La naturale alternativa è lo step tecnologico precedente, cioè WCF, che funziona benissimo e supporta tutto di tutto. E confermo che infatti ho implementato con quello la parte di ricezione da SDI (tutto il resto è in .NET Core).


(Bruno Mandarà) #17

ciao , avevo iniziato ad utilizzare wcf poi adesso non ricordo che problema ho avuto, ma è possibile vedere come replicare questo metodo con wcf:

    [WebMethod]
    [SoapDocumentMethod("http://www.fatturapa.it/RicezioneFatture/RiceviFattureSdI",
     Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Bare)]
    [return: XmlElement("rispostaRiceviFatture", Namespace = "http://www.fatturapa.gov.it/sdi/ws/ricezione/v1.0/types")]
    public RicezioneFatture_service.rispostaRiceviFatture_Type RiceviFatture([XmlElement(Namespace = "http://www.fatturapa.gov.it/sdi/ws/ricezione/v1.0/types")]
    RicezioneFatture_service.fileSdIConMetadati_Type fileSdIConMetadati)
    {
        try
        {

            Utility.WriteLog("RiceviFatture");
            Utility.WriteLog(fileSdIConMetadati.IdentificativoSdI);

            return new RicezioneFatture_service.rispostaRiceviFatture_Type();
        }
        catch (Exception ex)
        {

            Debug.WriteLine(ex.Message);
            Utility.WriteLog(ex.Message);
            return null;
        }

    }

(Bruno Mandarà) #18

ciao sto cercando dimigrare da asmx a wcf, pero non riesco a passare i parametri dalla richiesta soap, è un problema di namespace ma non sono riuscito a farlo funzionare.
questo è il la richiesta del servizio dell agenzia dell entrate:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:typ="http://www.fatturapa.gov.it/sdi/ws/trasmissione/v1.0/types">
  <soapenv:Header>
  </soapenv:Header>
   <soapenv:Body>
      <typ:ricevutaConsegna >
         <IdentificativoSdI>47474747</IdentificativoSdI>
         <NomeFile>rrrrrrrrr</NomeFile>
         <File></File>
       </typ:ricevutaConsegna>
   </soapenv:Body>
</soapenv:Envelope>

mentre questo è quello che produco dal client wcf :

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.fatturapa.it/TrasmissioneFatture/RicevutaConsegna</Action>
  </s:Header>
  <s:Body>
    <ricevutaConsegna xmlns="http://www.fatturapa.gov.it/sdi/ws/trasmissione/v1.0/types">
      <IdentificativoSdI d4p1:nil="true" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance" />
      <NomeFile d4p1:nil="true" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance" />
      <File></File>
    </ricevutaConsegna>
  </s:Body>
</s:Envelope>

questo è la mia interfaccia:

[ServiceContract(Namespace = "http://www.fatturapa.gov.it/sdi/ws/trasmissione/v1.0/types")]
public interface ITrasmissioneFatture
{
    [OperationContract]
    Task<bool> SendXmlFE(string filePath);

    [OperationContract(Name = "ricevutaConsegna",Action = "http://www.fatturapa.it/TrasmissioneFatture/RicevutaConsegna")]
    Task RicevutaConsegna(string IdentificativoSdI, string NomeFile, byte[] File);
    
}

e questa è la mia implementazione:

 public async Task RicevutaConsegna(string IdentificativoSdI, string NomeFile, byte[] File)
    {
        try
        {

            Utility.WriteLog("RicevutaConsegna");
            //return "Ok";
        }
        catch (Exception ex)
        {

            Debug.WriteLine(ex.Message);
            //return null;
        }
    }

non riesco a farmi passare i parametri il problemà credo che sia nel namespace dell oggetto ricevuta consegna.


(Bruno) #19

guarda che con WCF tutte queste cose non le devi fare a mano… se gli dai in pasto le specifiche SdI ti genera da solo tutta l’interfaccia da implementare. Es per quello che citi tu:

[System.ServiceModel.ServiceContractAttribute(Namespace = “http://www.fatturapa.gov.it/sdi/ws/trasmissione/v1.0”, ConfigurationName = “TrasmissioneFatture”)]
public interface TrasmissioneFatture

// CODEGEN: Generating message contract since the operation RicevutaConsegna is neither RPC nor document wrapped.
    [System.ServiceModel.OperationContractAttribute(IsOneWay = true, Action = "http://www.fatturapa.it/TrasmissioneFatture/RicevutaConsegna")]
    [System.ServiceModel.XmlSerializerFormatAttribute()]
    void RicevutaConsegna(RicevutaConsegna request);

poi tu magari rifai tutto a mano perfettamente, ma il tool in due secondi ti dà l’interfaccia da implemenentare perfettamente corrispondente a quella del WS…


(Bruno Mandarà) #20

tramite svcutil? @baz


(Bruno Mandarà) #21

sono riuscito a migrare tutto e farlo funzionare con wcf, adesso ho fatto l’annullamento del canale per poter cambiare endpoint, ma mi dice di comunicare sia gli endpoint normali che di test, voi avete inserito altri endpoint per i test oppure avete messo gli stessi endpoint della produzione?