Freigeben über


InvalidDataContractException Klasse

Definition

Die Ausnahme, die ausgelöst wird, wenn der DataContractSerializer oder der NetDataContractSerializer bei der Serialisierung oder Deserialisierung auf einen ungültigen Datenvertrag trifft.

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
Vererbung
InvalidDataContractException
Attribute

Beispiele

Im folgenden Beispiel wird ein Dienstvertrag, ICalculator, veranschaulicht, der zwei Methoden, Add und MoreData, einschließt. Die MoreData-Methode gibt eine Instanz der ExtraData-Klasse zurück, die auch im Code deklariert ist. Wenn die implementierte Schnittstelle Calculator ausgeführt wird, wird ein InvalidDataContractException ausgelöst, weil der ExtraData nicht auf die DataContractAttribute-Klasse angewendet wird.

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

Hinweise

Eine Instanz dieses Typs wird ausgelöst, wenn der DataContractSerializer oder der NetDataContractSerializer feststellt, dass der Typ der zu serialisierenden oder zu deserialisierenden Instanz ungültig ist. Eine Instanz dieses Typs wird auch ausgelöst, wenn ein ungültiger Typ an die Schemaimport- oder -export-Engine übergeben wird.

Konstruktoren

InvalidDataContractException()

Initialisiert eine neue Instanz der InvalidDataContractException-Klasse.

InvalidDataContractException(SerializationInfo, StreamingContext)
Veraltet.

Initialisiert eine neue Instanz der InvalidDataContractException-Klasse mit den angegebenen SerializationInfo und dem angegebenen StreamingContext.

InvalidDataContractException(String)

Initialisiert eine neue Instanz der InvalidDataContractException-Klasse mit der angegebenen Fehlermeldung.

InvalidDataContractException(String, Exception)

Initialisiert eine neue Instanz der InvalidDataContractException-Klasse mit der angegebenen Fehlermeldung und der angegebenen internen Ausnahme.

Eigenschaften

Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen.

(Geerbt von Exception)
HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.

(Geerbt von Exception)
HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.

(Geerbt von Exception)
InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.

(Geerbt von Exception)
Message

Ruft eine Meldung ab, mit der die aktuelle Ausnahme beschrieben wird.

(Geerbt von Exception)
Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.

(Geerbt von Exception)

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die Grundursache für eine oder mehrere nachfolgende Ausnahmen ist.

(Geerbt von Exception)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)
Veraltet.

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.

(Geerbt von Exception)
GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen Ausnahme und gibt diese zurück.

(Geerbt von Exception)

Ereignisse

SerializeObjectState
Veraltet.

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.

(Geerbt von Exception)

Gilt für:

Weitere Informationen