InvalidDataContractException Classe

Definizione

Eccezione generata quando DataContractSerializer o NetDataContractSerializer rileva un contratto dati non valido durante la serializzazione e la deserializzazione.

public class InvalidDataContractException : Exception
[System.Serializable]
public class InvalidDataContractException : Exception
Ereditarietà
InvalidDataContractException
Attributi

Esempio

Nell'esempio seguente viene illustrato un contratto di servizio, ICalculatorche include due metodi, Add e MoreData. Il metodo MoreData restituisce un'istanza della classe ExtraData, dichiarata anche nel codice. Quando viene eseguita l'interfaccia Calculator implementata, viene generata un'eccezione InvalidDataContractException perché alla classe ExtraData non è applicato l'attributo DataContractAttribute.

public  class Test
{
    static void Main()
    {
        try
        {
            Test t = new Test();
            t.Run();
        }

        // Catch the InvalidDataContractException here.
        catch(InvalidDataContractException iExc)
        {
            Console.WriteLine("You have an invalid data contract: ");
            Console.WriteLine(iExc.Message);
            Console.ReadLine();
        }
          catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
            Console.WriteLine(exc.ToString() );
            Console.ReadLine();
        }
    }

    private void Run()
    {
        // Create a new WSHttpBinding and set the security mode to Message;
        WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);

        // Create a ServiceHost instance, and add a metadata endpoint.
        Uri baseUri= new Uri("http://localhost:1008/");
        ServiceHost sh = new ServiceHost(typeof(Calculator), baseUri);

        // Optional. Add a metadata endpoint. The method is defined below.
        AddMetadataEndpoint(ref sh);

        // Add an endpoint using the binding, and open the service.
        sh.AddServiceEndpoint(typeof(ICalculator), b, "myCalculator");
        sh.Open();

        Console.WriteLine("Listening...");
        Console.ReadLine();
    }

    private void AddMetadataEndpoint(ref ServiceHost sh)
    {
        Uri mex = new Uri(@"http://localhost:1001/metadata/");
        ServiceMetadataBehavior sm = new ServiceMetadataBehavior();
        sm.HttpGetEnabled = true;
        sm.HttpGetUrl = mex;
        sh.Description.Behaviors.Add(sm);
    }
}

// This class will cause an InvalidDataContractException to be thrown because
// neither the DataContractAttribute nor DataMemberAttribute has been applied to it.
public class ExtraData
{
    public System.Collections.Generic.List<string> RandomData;
}

[ServiceContract(ProtectionLevel=System.Net.Security.ProtectionLevel.EncryptAndSign) ]
interface ICalculator
{
    [OperationContract]
    double Add(double a, double b);

    [OperationContract]
    ExtraData MoreData();
}

public class Calculator : ICalculator
{
    public double Add(double a, double b)
    {
        return a + b;
    }

    public ExtraData MoreData()
    {
        ExtraData ex = new ExtraData();
        ex.RandomData.Add("Hello");
        ex.RandomData.Add( "World" );
        return ex;
    }
}

Commenti

Un'istanza di questo tipo verrà generata se DataContractSerializer o NetDataContractSerializer rileva che il tipo dell'istanza che viene serializzata o deserializzata è non valido. Un'istanza di questo tipo verrà inoltre generata se un tipo non valido viene passato al motore di importazione o esportazione dello schema.

Costruttori

InvalidDataContractException()

Inizializza una nuova istanza della classe InvalidDataContractException.

InvalidDataContractException(SerializationInfo, StreamingContext)
Obsoleti.

Inizializza una nuova istanza della classe InvalidDataContractException con gli oggetti SerializationInfo e StreamingContext specificati.

InvalidDataContractException(String)

Inizializza una nuova istanza della classe InvalidDataContractException con il messaggio di errore specificato.

InvalidDataContractException(String, Exception)

Inizializza una nuova istanza della classe InvalidDataContractException con l'eccezione interna e il messaggio di errore specificati.

Proprietà

Data

Ottiene una raccolta di coppie chiave/valore che forniscono informazioni definite dall'utente aggiuntive sull'eccezione.

(Ereditato da Exception)
HelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.

(Ereditato da Exception)
HResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.

(Ereditato da Exception)
InnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.

(Ereditato da Exception)
Message

Ottiene un messaggio che descrive l'eccezione corrente.

(Ereditato da Exception)
Source

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.

(Ereditato da Exception)
StackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.

(Ereditato da Exception)
TargetSite

Ottiene il metodo che genera l'eccezione corrente.

(Ereditato da Exception)

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBaseException()

Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.

(Ereditato da Exception)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoleti.

Quando ne viene eseguito l'override in una classe derivata, imposta il controllo SerializationInfo con le informazioni sull'eccezione.

(Ereditato da Exception)
GetType()

Ottiene il tipo di runtime dell'istanza corrente.

(Ereditato da Exception)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.

(Ereditato da Exception)

Eventi

SerializeObjectState
Obsoleti.

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.

(Ereditato da Exception)

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Vedi anche