InvalidDataContractException Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Excepción que se produce cuando o DataContractSerializer encuentra un contrato de datos no válido durante la NetDataContractSerializer serialización y deserialización.
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
- Herencia
- Atributos
Ejemplos
En el ejemplo siguiente se muestra un contrato de servicio, , ICalculatorque incluye dos métodos y AddMoreData. El MoreData método devuelve una instancia de la ExtraData clase , que también se declara en el código. Cuando se ejecuta la interfaz Calculator implementada, se producirá una InvalidDataContractException excepción porque la ExtraData clase no tiene aplicada 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;
}
}
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
Comentarios
Se producirá una instancia de este tipo si o DataContractSerializerNetDataContractSerializer detecta que el tipo de la instancia que se serializa o deserializa no es válido. También se producirá una instancia de este tipo si se pasa un tipo no válido al motor de importación o exportación de esquemas.
Constructores
| Nombre | Description |
|---|---|
| InvalidDataContractException() |
Inicializa una nueva instancia de la clase InvalidDataContractException. |
| InvalidDataContractException(SerializationInfo, StreamingContext) |
Inicializa una nueva instancia de la InvalidDataContractException clase con los valores especificados SerializationInfo y StreamingContext. |
| InvalidDataContractException(String, Exception) |
Inicializa una nueva instancia de la InvalidDataContractException clase con el mensaje de error y la excepción interna especificados. |
| InvalidDataContractException(String) |
Inicializa una nueva instancia de la clase InvalidDataContractException con el mensaje de error especificado. |
Propiedades
| Nombre | Description |
|---|---|
| Data |
Obtiene una colección de pares clave-valor que proporcionan información adicional definida por el usuario sobre la excepción. (Heredado de Exception) |
| HelpLink |
Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción. (Heredado de Exception) |
| HResult |
Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica. (Heredado de Exception) |
| InnerException |
Obtiene la Exception instancia que provocó la excepción actual. (Heredado de Exception) |
| Message |
Obtiene un mensaje que describe la excepción actual. (Heredado de Exception) |
| Source |
Obtiene o establece el nombre de la aplicación o el objeto que provoca el error. (Heredado de Exception) |
| StackTrace |
Obtiene una representación de cadena de los fotogramas inmediatos en la pila de llamadas. (Heredado de Exception) |
| TargetSite |
Obtiene el método que produce la excepción actual. (Heredado de Exception) |
Métodos
| Nombre | Description |
|---|---|
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetBaseException() |
Cuando se reemplaza en una clase derivada, devuelve la Exception causa principal de una o varias excepciones posteriores. (Heredado de Exception) |
| GetHashCode() |
Actúa como la función hash predeterminada. (Heredado de Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Cuando se reemplaza en una clase derivada, establece con SerializationInfo información sobre la excepción. (Heredado de Exception) |
| GetType() |
Obtiene el tipo de tiempo de ejecución de la instancia actual. (Heredado de Exception) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ToString() |
Crea y devuelve una representación de cadena de la excepción actual. (Heredado de Exception) |
Eventos
| Nombre | Description |
|---|---|
| SerializeObjectState |
Se produce cuando se serializa una excepción para crear un objeto de estado de excepción que contiene datos serializados sobre la excepción. (Heredado de Exception) |