InvalidDataContractException Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Výjimka, která je vyvolána při DataContractSerializer nebo NetDataContractSerializer narazí na neplatný kontrakt dat během serializace a deserializace.
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
- Dědičnost
- Atributy
Příklady
Následující příklad ukazuje kontrakt služby , ICalculator
který obsahuje dvě metody, Add
a MoreData
. Metoda MoreData
vrátí instanci ExtraData
třídy , která je také deklarována v kódu. Při spuštění implementovaného rozhraní Calculator
bude vyvolán, protože ExtraData
třída na něj nemá DataContractAttribute použito.InvalidDataContractException
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
Poznámky
Instance tohoto typu bude vyvolána, pokud DataContractSerializer nebo NetDataContractSerializer zjistí, že typ serializované nebo deserializované instance je neplatný. Instance tohoto typu bude také vyvolán, pokud je do modulu importu nebo exportu schématu předán neplatný typ.
Konstruktory
InvalidDataContractException() |
Inicializuje novou instanci InvalidDataContractException třídy . |
InvalidDataContractException(SerializationInfo, StreamingContext) |
Zastaralé.
Inicializuje novou instanci InvalidDataContractException třídy se zadanými SerializationInfo a StreamingContext. |
InvalidDataContractException(String) |
Inicializuje novou instanci InvalidDataContractException třídy se zadanou chybovou zprávou. |
InvalidDataContractException(String, Exception) |
Inicializuje novou instanci InvalidDataContractException třídy se zadanou chybovou zprávou a vnitřní výjimkou. |
Vlastnosti
Data |
Získá kolekci párů klíč/hodnota, které poskytují další uživatelem definované informace o výjimce. (Zděděno od Exception) |
HelpLink |
Získá nebo nastaví odkaz na soubor nápovědy přidružený k této výjimce. (Zděděno od Exception) |
HResult |
Získá nebo nastaví HRESULT, kódovaná číselná hodnota, která je přiřazena ke konkrétní výjimce. (Zděděno od Exception) |
InnerException |
Exception Získá instanci, která způsobila aktuální výjimku. (Zděděno od Exception) |
Message |
Získá zprávu, která popisuje aktuální výjimku. (Zděděno od Exception) |
Source |
Získá nebo nastaví název aplikace nebo objektu, který způsobuje chybu. (Zděděno od Exception) |
StackTrace |
Získá řetězcovou reprezentaci okamžitých rámců v zásobníku volání. (Zděděno od Exception) |
TargetSite |
Získá metodu, která vyvolá aktuální výjimku. (Zděděno od Exception) |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetBaseException() |
Při přepsání v odvozené třídě vrátí hodnotu Exception , která je původní příčinou jedné nebo více následných výjimek. (Zděděno od Exception) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Zastaralé.
Při přepsání v odvozené třídě nastaví s SerializationInfo informacemi o výjimce. (Zděděno od Exception) |
GetType() |
Získá typ modulu runtime aktuální instance. (Zděděno od Exception) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vytvoří a vrátí řetězcovou reprezentaci aktuální výjimky. (Zděděno od Exception) |
Událost
SerializeObjectState |
Zastaralé.
Nastane, když je výjimka serializována k vytvoření objektu stavu výjimky, který obsahuje serializovaná data o výjimce. (Zděděno od Exception) |