Visualizzazione dei risultati da 1 a 10 su 19

Visualizzazione discussione

  1. #1

    [4.5] - Lista di una lista per WebService

    Ciao,
    lo so che ci sono molti post relativi al problema in oggetto, ma nessuno di questi ha risolto il mio problema. Quindi provo ad esporlo sperando che qualcuno di voi possa aiutarmi.

    Ho creato una pagina Aspx e Aspx.cs per un WebService, che va a prendere le WebReference da un link https senza alcun problema.

    In testa alla pagina aspx.cs scrivo giustamente:
    codice:
    public partial class testservice : System.Web.UI.Page
    {
        WcfDemo.Service1Client test = new WcfDemo.Service1Client();
    [etc...]
    E così posso richiamare tranquillamente tutti i metodi, che funzionano tutti... tranne uno

    Il metodo in questione
    "ResponseInsertAdempFields = test.ResponseInsertAdempFields(Token, ListInsertAdempResponse);"

    richiede in input una stringa "Token" che do in pasto senza problemi, al contrario invece di "ListInsertAdempResponse" che è una lista dal costrutto un po' complicato.

    Nella pagina "originale" da cui il WebService prende la WebReference, il codice di questa lista è il seguente:

    codice:
    public class ResponseInsertAdempList
        {
            bool Ok = true;
            string MessageResult = "";
    
    
            [DataMember]
            public bool TestOk
            {
                get { return Ok; }
                set { Ok = value; }
            }
    
    
            [DataMember]
            public string TestMessageResult
            {
                get { return MessageResult; }
                set { MessageResult = value; }
            }
        }
    
    
        public class InsertAdempFields
        {
            string NomeCampo = "";
            string ValoreCampo = "";
    
    
    
    
            [DataMember]
            public string TestNomeCampo
            {
                get { return NomeCampo; }
                set { NomeCampo = value; }
            }
    
    
            [DataMember]
            public string TestValoreCampo
            {
                get { return ValoreCampo; }
                set { ValoreCampo = value; }
            }
        }
    
    
        public class InsertAdempList
        {
            List<InsertAdempFields> campi = new List<InsertAdempFields>();
    
    
    
    
            [DataMember]
            public List<InsertAdempFields> Campi
            {
                get { return campi; }
                set { campi = value; }
            }
        }
    Nella pagina aspx.cs quindi creo le istanze necessarie:

    codice:
    //output dell'insert (è OK)
    static public ResponseInsertAdempList ResponseInsertAdempFields = new ResponseInsertAdempList();
    
    //input dell'insert (non è OK... perchè perde il riferimento quando scava dentro nella lista)
    static public InsertAdempList ListInsertAdempResponse = new InsertAdempList();
    E in sintesi dovrei assegnare dei valori a variabili di questo tipo:

    codice:
    ListInsertAdempResponse.Campi[0].TestNomeCampo = "S_CAMPO1";
    ListInsertAdempResponse.Campi[0].TestValoreCampo = Request["campo1"];
    La variabile viene riconosciuta da Visual Studio (senza sottolineature di errore), purtroppo però quando avvio e chiamo il metodo, è come se il puntatore si perdesse dopo Campi in "ListInsertAdempResponse.Campi"

    l'errore mi dice:
    "WcfDemo.InsertAdempList.Campi.get ha restituito null"


    Ho provato di tutto, creando tutte le istanze possibili e immaginabili come:
    codice:
    static public List<InsertAdempFields> Campi = new List<InsertAdempFields>();
    static public InsertAdempFields Fields = new InsertAdempFields();

    Ho provato anche a creare una variabile ad HOC come:
    codice:
    static public InsertAdempList<List<InsertAdempFields>> ListInsertAdempResponse = new InsertAdempList<List<InsertAdempFields>>();
    Con questa non ho problemi nell'assegnazione (riesco ad assegnare i valori) però poi il metodo non me la riconosce come tipo valido in input

    Poi ho provato a guardare la definizione della "InsertAdempList" (la variabile in input) nella pagina del progetto WebService e vedo che il costruttore è leggermente diverso:
    codice:
    public class InsertAdempList : IExtensibleDataObject, INotifyPropertyChanged
        {
            public InsertAdempList();
    
    
            public ExtensionDataObject ExtensionData { get; set; }
            [DataMember]
            public InsertAdempFields[] Campi { get; set; }
    
    
            public event PropertyChangedEventHandler PropertyChanged;
    
    
            protected void RaisePropertyChanged(string propertyName);
        }
    In particolare noto che "public InsertAdempFields[] Campi { get; set; }"
    ha solo dei semplici get e set, mentre invece nel progetto di riferimento il costrutto era più complesso

    Forse è questo il problema? La pagina della definizione però è bloccata, non posso modificarla.

    Io ho finito tutte le idee, spero di essere riuscito a spiegarmi. Per favore aiutatemi :'(

    Vi ringrazio infinitamente già anche solo per la pazienza che mi dedicherete...
    Cordialmente,
    Raimondo
    Ultima modifica di djciko; 17-04-2018 a 10:50

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.