InvalidDataContractException Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Pengecualian yang dilemparkan ketika DataContractSerializer atau NetDataContractSerializer mengalami kontrak data yang tidak valid selama serialisasi dan deserialisasi.
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
- Warisan
- Atribut
Contoh
Contoh berikut menunjukkan kontrak layanan, ICalculator
, yang mencakup dua metode, Add
dan MoreData
. Metode mengembalikan MoreData
instans ExtraData
kelas , yang juga dideklarasikan dalam kode. Ketika antarmuka Calculator
yang diimplementasikan berjalan, InvalidDataContractException
akan dilemparkan karena ExtraData
kelas tidak memiliki DataContractAttribute yang diterapkan padanya.
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
Keterangan
Instans jenis ini akan dilemparkan jika DataContractSerializer atau NetDataContractSerializer mendeteksi bahwa jenis instans yang diserialisasikan atau dideserialisasi tidak valid. Instans jenis ini juga akan dilemparkan jika jenis yang tidak valid diteruskan ke mesin impor atau ekspor skema.
Konstruktor
InvalidDataContractException() |
Menginisialisasi instans baru kelas InvalidDataContractException. |
InvalidDataContractException(SerializationInfo, StreamingContext) |
Kedaluwarsa.
Menginisialisasi instans InvalidDataContractException baru kelas dengan dan StreamingContextyang ditentukanSerializationInfo. |
InvalidDataContractException(String) |
Menginisialisasi instans InvalidDataContractException baru kelas dengan pesan kesalahan yang ditentukan. |
InvalidDataContractException(String, Exception) |
Menginisialisasi instans InvalidDataContractException baru kelas dengan pesan kesalahan dan pengecualian dalam yang ditentukan. |
Properti
Data |
Mendapatkan kumpulan pasangan kunci/nilai yang memberikan informasi tambahan yang ditentukan pengguna tentang pengecualian. (Diperoleh dari Exception) |
HelpLink |
Mendapatkan atau mengatur tautan ke file bantuan yang terkait dengan pengecualian ini. (Diperoleh dari Exception) |
HResult |
Mendapatkan atau mengatur HRESULT, nilai numerik berkode yang ditetapkan ke pengecualian tertentu. (Diperoleh dari Exception) |
InnerException |
Mendapatkan instans Exception yang menyebabkan pengecualian saat ini. (Diperoleh dari Exception) |
Message |
Mendapatkan pesan yang menjelaskan pengecualian saat ini. (Diperoleh dari Exception) |
Source |
Get dan set nama aplikasi atau objek yang menyebabkan kesalahan. (Diperoleh dari Exception) |
StackTrace |
Mendapatkan representasi string dari bingkai langsung pada tumpukan panggilan. (Diperoleh dari Exception) |
TargetSite |
Mendapatkan metode yang melemparkan pengecualian saat ini. (Diperoleh dari Exception) |
Metode
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetBaseException() |
Ketika ditimpa di kelas turunan Exception , mengembalikan yang merupakan akar penyebab dari satu atau beberapa pengecualian berikutnya. (Diperoleh dari Exception) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Kedaluwarsa.
Saat ditimpa di kelas turunan SerializationInfo , mengatur dengan informasi tentang pengecualian. (Diperoleh dari Exception) |
GetType() |
Mendapatkan jenis runtime dari instans saat ini. (Diperoleh dari Exception) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
ToString() |
Membuat dan mengembalikan representasi string dari pengecualian saat ini. (Diperoleh dari Exception) |
Acara
SerializeObjectState |
Kedaluwarsa.
Terjadi ketika pengecualian diserialisasikan untuk membuat objek status pengecualian yang berisi data berseri tentang pengecualian. (Diperoleh dari Exception) |