46 messaggi dal 18 aprile 2018
Buonasera a tutti,
ho 2 applicazioni una MVC e una webform.. per il momento diciamo che mi interessa intervenire sulla webform ma la domanda riguarda entrambi.
Non ho mai usato un protocollo REST o SOAP, dovrei dare accesso a delle informazioni su alcuni clienti a un altra applicazione su un altro server quindi non so da dove cominciare.. ho cercato qualche guida ma non mi è chiaro come procedere.
So che è gia stata utilizzata qualcosa di simile in quanto nella cartella appcode della mia soluzione ho delle classe wcf, immagino quindi abbiano utilizzato SOAP

Ringrazio in anticipo.

Mirko
11.097 messaggi dal 09 febbraio 2002
Contributi
Ciao Mirko,

So che è gia stata utilizzata qualcosa di simile in quanto nella cartella appcode della mia soluzione ho delle classe wcf, immagino quindi abbiano utilizzato SOAP

Ok, potresti aggiungere altre operazioni al servizio WCF già esistente. Però devi farti spiegare dallo sviluppatore precedente cosa è stato fatto.

Altrimenti, se vuoi crearne uno tuo nuovo, fai tasto destro sul progetto e clicca Aggiungi -> Aggiungi nuovo elemento -> Servizio WCF. Ti verrà creato un servizio basilare funzionante che consiste di un file .svc il cui URL dovrai digitare nel browser e di classi in cui definire le tue operazioni.

ciao,
Moreno

Enjoy learning and just keep making
46 messaggi dal 18 aprile 2018
Ciao Moreno, grazie come sempre della tua disponibilità. Ti dico quanto fatto fin ora:

1) ho aggiunto il servizio wcf come mi hai detto (si sono creati 3 file WebservicesM.svc, WebservicesM.cs, IWebservicesM.svc )

2) Spostato il file WebservicesM.svc appena creato nella cartella webservices(dove sono presenti altri services)
3) in App_Code creata la cartella wcfWebServicesM dove ho inserito i file WebservicesM.cs, IWebservicesM.svc
4) Modificato il percorso alla voce CodeBehind del file svc
5) Creata la cartella Classi
6) Creata la classe Utente così strutturata:

public class Utente
{

    public string ID                { get; set; }
    public string Cognome           { get; set; }
    public string Nome              { get; set; }
    public string Sesso             { get; set; }
  

    public Utente()
    {
        //
        // TODO: aggiungere qui la logica del costruttore
        //
    
}
}


7) Riempito il file WebservicesM.cs come segue

namespace WebservicesMWcf
{
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] // copiato dai vecchi servizi
        [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] // copiato dai vecchi servizi


    public class WebservicesM : IWebservicesM
    {
        
       
        protected SqlDBEntities DB = new SqlDBEntities();
        DiditFidelityBor Cliente = new DiditFidelityBor();


        public Utente Clienti(string ID)
        {

           
            var DatiCliente = DB.DTFidelity.Where(x => x.ID.Equals(ID)).First();

            Cliente.ID= DatiCliente.ID;
            Cliente.Nome = DatiCliente.Nome;
            Cliente.Cognome = DatiCliente.Cognome;
            Cliente.Sesso = DatiCliente.Sesso;
         
            return Cliente;
        }
                         
    }


}


8) Modificata l'interfaccia IWebservicesM

public interface IWebservicesM
{
     [OperationContract]
    [WebGet(UriTemplate = "Utente/?ID={ID}")]
    DiditFidelityBor Clienti(string ID);
}



PS: l'id che li ho impostato sarà poi passato da chi deve leggere i dati

facendo poi ctrl + F5 per vedere il risultato mi da un errore:



Errore: Impossibile ottenere i metadati da http://localhost:53704/WebServices/WebservicesM.svc 
Se si tratta di un servizio di Windows (R) Communication Foundation a cui si ha accesso, verificare che sia abilitata la 
pubblicazione dei metadati all'indirizzo specificato. 
Per informazioni sull'abilitazione della pubblicazione dei metadati, 
fare riferimento alla documentazione MSDN all'indirizzo http://go.microsoft.com/fwlink/?LinkId=65455.Errore WS-Metadata 
Exchange URI: http://localhost:53704/WebServices/WebservicesM.svc I metadati contengono un riferimento che non può 
essere risolto: 'http://localhost:53704/WebServices/WebservicesM.svc'. 
Impossibile attivare il servizio richiesto, 'http://localhost:53704/WebServices/WebservicesM.svc'. 
Per ulteriori informazioni, vedere i registri di traccia di diagnostica del server.
HTTP GET Error URI: http://localhost:53704/WebServices/WebservicesM.svc 
Errore durante il download di 'http://localhost:53704/WebServices/WebservicesM.svc'. 
Richiesta non riuscita con messaggio di errore:-- 


Il tipo 'WebServicesM', specificato come valore di attributo Service nella direttiva ServiceHost o specificato nell'elemento di configurazione system.serviceModel/serviceHostingEnvironment/serviceActivations non ¦ stato trovato.
Modificato da Mirko2018 il 16 novembre 2018 11.56 -
Modificato da Mirko2018 il 16 novembre 2018 12.03 -
11.097 messaggi dal 09 febbraio 2002
Contributi
Ciao, puoi far vedere il contenuto del file WebservicesM.svc?
Indica il tipo con il suo nome completo di namespace, cioè WebservicesMWcf.WebservicesM

L'interfaccia IWebservicesM dovrebbe trovarsi anch'essa nel namespace WebservicesMWcf.

ciao,
Moreno

Enjoy learning and just keep making
46 messaggi dal 18 aprile 2018
Ciao Moreno,
non so come ho risolto, ansi che creare un nuovo servizio mi sono allacciato al servizio già esistente, aggiungendo una classe e funziona... proseguo però con una domanda, per creare una key da far utilizzare a chi accede al servizio in modo che se qualcuno beccasse l'url con uno spoofing senza chiave si attacca, come potrei fare?
ho pensato di inserire nell'input un campo key da confrontare con un GUID che condividerei con chi usa il servizio, oppure c'è un modo migliore per farlo?
11.097 messaggi dal 09 febbraio 2002
Contributi
Ciao Mirko,


ho pensato di inserire nell'input un campo key da confrontare con un GUID che condividerei con chi usa il servizio

Lo puoi fare ma così sei costretto ad aggiungere un ulteriore parametro a ogni tua operazione e, da ciascuna, dovrai ricordarti di validare quel parametro.

In alternativa, WCF supporta l'autenticazione con user e password che vengono forniti nell'intestazione del messaggio SOAP. Trovi qui degli articoli:
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-use-a-custom-user-name-and-password-validator
https://msdn.microsoft.com/en-us/library/ff405740.aspx

ciao,
Moreno
Modificato da BrightSoul il 20 novembre 2018 20.17 -

Enjoy learning and just keep making

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.