179 messaggi dal 12 luglio 2007
ciao,
non me la sentivo di fare un articolo quindi post qua la soluzione ad un problema che ho fatto difficoltà a risolvere ance cercando online, ossia consumare un servizio asmx da net core 7.
Per prima cosa da Visual Studio, dal progetto, eseguire la procedura "Add service reference" e seguire la procedura "WCF Web Service" dandogli in pasto il percorso dell'asmx, ad esempio "http://miodominio.it/mioservizio.asmx".

Alla fine della procedura nel progetto verrà creata la cartella "Connected Services" e sotto la cartella per il servizio. Dentro ci sono i file

- ConnectedService.json -> contiene le specifice ricavate analizzando il servizio
- Reference.cs -> la classe generata automaticamente via Scaffolding
Questi file non vanno modificati a mano!

Come primo passo bisogna creare tutti gli oggetti che concorrono alla preparazione del canale di connessione. La sicurezza sul canale anche se di tipo Basic dovrà essere dichiarato come Ntlm. Le credenziali di accesso in questo caso le ereditiamo dal software.
Fatto questo possiamo istanziare il client.

EndpointAddress endpoint = new EndpointAddress(new Uri("http://miodominio.it/mioservizio.asmx"));
BasicHttpBinding httpBinding = new BasicHttpBinding();
httpBinding.MaxReceivedMessageSize = Int32.MaxValue;
httpBinding.MaxBufferSize = Int32.MaxValue;
httpBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
httpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
var nc = CredentialCache.DefaultNetworkCredentials;
 
client = new MioServizio.MioServizioSoapClient(httpBinding, endpoint); //
client.ClientCredentials.Windows.ClientCredential = nc;


L'esecuzione delle operazioni prevede la diretta apertura e chiusura del canale di comunicazione verso il server, all'interno della quale effettuare tutte le operazioni necessarie, credo si chiami channel pattern o qualche cosa di simile:

client.ChannelFactory.CreateChannel();
var response = await client.MioMetodoAsync(mioDto);
client.ChannelFactory.Close();


Spero possa essere utile.

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.