InvalidDataContractException Klas

Definitie

De uitzondering die wordt gegenereerd wanneer het DataContractSerializer of NetDataContractSerializer een ongeldig gegevenscontract tegenkomt tijdens serialisatie en deserialisatie.

public ref class InvalidDataContractException : Exception
public class InvalidDataContractException : Exception
[System.Serializable]
public class InvalidDataContractException : Exception
type InvalidDataContractException = class
    inherit Exception
[<System.Serializable>]
type InvalidDataContractException = class
    inherit Exception
Public Class InvalidDataContractException
Inherits Exception
Overname
InvalidDataContractException
Kenmerken

Voorbeelden

In het volgende voorbeeld ziet u een servicecontract, ICalculatordat twee methoden bevat en MoreDataAdd . De MoreData methode retourneert een exemplaar van de ExtraData klasse, dat ook in de code wordt gedeclareerd. Wanneer de geïmplementeerde interface Calculator wordt uitgevoerd, wordt er een InvalidDataContractException gegenereerd omdat de ExtraData klasse er niet op DataContractAttribute is toegepast.

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;
    }
}
Public Class Test
    
    Shared Sub Main() 
        Try
            Dim t As New Test()
            t.Run()
        
        ' Catch the InvalidDataContractException here.
        Catch iExc As InvalidDataContractException
            Console.WriteLine("You have an invalid data contract: ")
            Console.WriteLine(iExc.Message)
            Console.ReadLine()
        
        Catch exc As Exception
            Console.WriteLine(exc.Message)
            Console.WriteLine(exc.ToString())
            Console.ReadLine()
        End Try
    
    End Sub 
    
    Private Sub Run() 
        ' Create a new WSHttpBinding and set the security mode to Message;
        Dim b As New WSHttpBinding(SecurityMode.Message)
        
        ' Create a ServiceHost instance, and add a metadata endpoint.
        Dim baseUri As New Uri("http://localhost:1008/")
        Dim sh As New ServiceHost(GetType(Calculator), baseUri)
        
        ' Optional. Add a metadata endpoint. The method is defined below.
        AddMetadataEndpoint(sh)
        
        ' Add an endpoint using the binding, and open the service.
        sh.AddServiceEndpoint(GetType(ICalculator), b, "myCalculator")
        sh.Open()
        
        Console.WriteLine("Listening...")
        Console.ReadLine()
    
    End Sub 
    
    Private Sub AddMetadataEndpoint(ByRef sh As ServiceHost) 
        Dim mex As New Uri("http://localhost:1001/metadata/")
        Dim sm As New ServiceMetadataBehavior()
        sm.HttpGetEnabled = True
        sm.HttpGetUrl = mex
        sh.Description.Behaviors.Add(sm)
    
    End Sub 
End Class 

' This class will cause an InvalidDataContractException to be thrown because
' neither the DataContractAttribute nor DataMemberAttribute has been applied to it.

Public Class ExtraData
    Public RandomData As System.Collections.Generic.List(Of String)
End Class 

<ServiceContract(ProtectionLevel := System.Net.Security.ProtectionLevel.EncryptAndSign)>  _
Interface ICalculator
    <OperationContract()>  _
    Function Add(ByVal a As Double, ByVal b As Double) As Double 
    
    <OperationContract()>  _
    Function MoreData() As ExtraData 
End Interface 

Public Class Calculator
    Implements ICalculator
    
    Public Function Add(ByVal a As Double, ByVal b As Double) As Double _
    Implements ICalculator.Add
        Return a + b
    End Function 
        
    Public Function MoreData() As ExtraData Implements ICalculator.MoreData
        Dim ex As New ExtraData()
        ex.RandomData.Add("Hello")
        ex.RandomData.Add("World")
        Return ex
    End Function 
End Class

Opmerkingen

Er wordt een exemplaar van dit type gegenereerd als het DataContractSerializer type NetDataContractSerializer exemplaar dat wordt geserialiseerd of gedeserialiseerd, ongeldig is of detecteert. Er wordt ook een exemplaar van dit type gegenereerd als er een ongeldig type wordt doorgegeven aan de import- of exportengine van het schema.

Constructors

Name Description
InvalidDataContractException()

Initialiseert een nieuw exemplaar van de InvalidDataContractException klasse.

InvalidDataContractException(SerializationInfo, StreamingContext)

Initialiseert een nieuw exemplaar van de InvalidDataContractException klasse met de opgegeven SerializationInfo en StreamingContext.

InvalidDataContractException(String, Exception)

Initialiseert een nieuw exemplaar van de InvalidDataContractException klasse met het opgegeven foutbericht en de interne uitzondering.

InvalidDataContractException(String)

Initialiseert een nieuw exemplaar van de InvalidDataContractException klasse met het opgegeven foutbericht.

Eigenschappen

Name Description
Data

Hiermee haalt u een verzameling sleutel-waardeparen op die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden.

(Overgenomen van Exception)
HelpLink

Hiermee haalt u een koppeling op naar het Help-bestand dat aan deze uitzondering is gekoppeld.

(Overgenomen van Exception)
HResult

Hiermee wordt HRESULT opgehaald of ingesteld, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering.

(Overgenomen van Exception)
InnerException

Hiermee haalt u het Exception exemplaar op dat de huidige uitzondering heeft veroorzaakt.

(Overgenomen van Exception)
Message

Hiermee wordt een bericht weergegeven waarin de huidige uitzondering wordt beschreven.

(Overgenomen van Exception)
Source

Hiermee wordt de naam van de toepassing of het object dat de fout veroorzaakt, opgehaald of ingesteld.

(Overgenomen van Exception)
StackTrace

Hiermee haalt u een tekenreeksweergave van de directe frames op de aanroepstack op.

(Overgenomen van Exception)
TargetSite

Hiermee haalt u de methode op waarmee de huidige uitzondering wordt gegenereerd.

(Overgenomen van Exception)

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetBaseException()

Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u de Exception hoofdoorzaak van een of meer volgende uitzonderingen.

(Overgenomen van Exception)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetObjectData(SerializationInfo, StreamingContext)

Wanneer deze wordt overschreven in een afgeleide klasse, stelt u de SerializationInfo met informatie over de uitzondering in.

(Overgenomen van Exception)
GetType()

Hiermee haalt u het runtimetype van het huidige exemplaar op.

(Overgenomen van Exception)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Hiermee maakt en retourneert u een tekenreeksweergave van de huidige uitzondering.

(Overgenomen van Exception)

gebeurtenis

Name Description
SerializeObjectState

Treedt op wanneer een uitzondering wordt geserialiseerd om een uitzonderingsstatusobject te maken dat geserialiseerde gegevens over de uitzondering bevat.

(Overgenomen van Exception)

Van toepassing op

Zie ook