Bagikan melalui


CallbackBehaviorAttribute.ValidateMustUnderstand Properti

Definisi

Mendapatkan atau menetapkan nilai yang menentukan apakah sistem atau aplikasi memberlakukan pemrosesan header SOAP MustUnderstand .

public:
 property bool ValidateMustUnderstand { bool get(); void set(bool value); };
public bool ValidateMustUnderstand { get; set; }
member this.ValidateMustUnderstand : bool with get, set
Public Property ValidateMustUnderstand As Boolean

Nilai Properti

true jika sistem melakukan pemrosesan header MustUnderstand SOAP; jika tidak false, yang menunjukkan bahwa aplikasi melakukan pemrosesan ini. Nilai defaultnya adalah true.

Contoh

Contoh kode berikut menunjukkan CallbackBehaviorAttribute pada objek panggilan balik yang menggunakan objek untuk menentukan utas SynchronizationContext mana yang akan di-marshal, ValidateMustUnderstand properti untuk memberlakukan validasi pesan, dan IncludeExceptionDetailInFaults properti untuk mengembalikan pengecualian sebagai FaultException objek ke layanan untuk tujuan penelusuran kesalahan.

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Threading;

namespace Microsoft.WCF.Documentation
{
  [CallbackBehaviorAttribute(
   IncludeExceptionDetailInFaults= true,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true
  )]
  public class Client : SampleDuplexHelloCallback
  {
    AutoResetEvent waitHandle;

    public Client()
    {
      waitHandle = new AutoResetEvent(false);
    }

    public void Run()
    {
      // Picks up configuration from the configuration file.
      SampleDuplexHelloClient wcfClient
        = new SampleDuplexHelloClient(new InstanceContext(this), "WSDualHttpBinding_SampleDuplexHello");
      try
      {
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Enter a greeting to send and press ENTER: ");
        Console.Write(">>> ");
        Console.ForegroundColor = ConsoleColor.Green;
        string greeting = Console.ReadLine();
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Called service with: \r\n\t" + greeting);
        wcfClient.Hello(greeting);
        Console.WriteLine("Execution passes service call and moves to the WaitHandle.");
        this.waitHandle.WaitOne();
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("Set was called.");
        Console.Write("Press ");
        Console.ForegroundColor = ConsoleColor.Red;
        Console.Write("ENTER");
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.Write(" to exit...");
        Console.ReadLine();
      }
      catch (TimeoutException timeProblem)
      {
        Console.WriteLine("The service operation timed out. " + timeProblem.Message);
        Console.ReadLine();
      }
      catch (CommunicationException commProblem)
      {
        Console.WriteLine("There was a communication problem. " + commProblem.Message);
        Console.ReadLine();
      }
    }
    public static void Main()
    {
      Client client = new Client();
      client.Run();
    }

    public void Reply(string response)
    {
      Console.WriteLine("Received output.");
      Console.WriteLine("\r\n\t" + response);
      this.waitHandle.Set();
    }
  }
}

Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Threading

Namespace Microsoft.WCF.Documentation
  <CallbackBehaviorAttribute(IncludeExceptionDetailInFaults:= True, UseSynchronizationContext:=True, ValidateMustUnderstand:=True)> _
  Public Class Client
      Implements SampleDuplexHelloCallback
    Private waitHandle As AutoResetEvent

    Public Sub New()
      waitHandle = New AutoResetEvent(False)
    End Sub

    Public Sub Run()
      ' Picks up configuration from the configuration file.
      Dim wcfClient As New SampleDuplexHelloClient(New InstanceContext(Me), "WSDualHttpBinding_SampleDuplexHello")
      Try
        Console.ForegroundColor = ConsoleColor.White
        Console.WriteLine("Enter a greeting to send and press ENTER: ")
        Console.Write(">>> ")
        Console.ForegroundColor = ConsoleColor.Green
        Dim greeting As String = Console.ReadLine()
        Console.ForegroundColor = ConsoleColor.White
        Console.WriteLine("Called service with: " & Constants.vbCrLf & Constants.vbTab & greeting)
        wcfClient.Hello(greeting)
        Console.WriteLine("Execution passes service call and moves to the WaitHandle.")
        Me.waitHandle.WaitOne()
        Console.ForegroundColor = ConsoleColor.Blue
        Console.WriteLine("Set was called.")
        Console.Write("Press ")
        Console.ForegroundColor = ConsoleColor.Red
        Console.Write("ENTER")
        Console.ForegroundColor = ConsoleColor.Blue
        Console.Write(" to exit...")
        Console.ReadLine()
      Catch timeProblem As TimeoutException
        Console.WriteLine("The service operation timed out. " & timeProblem.Message)
        Console.ReadLine()
      Catch commProblem As CommunicationException
        Console.WriteLine("There was a communication problem. " & commProblem.Message)
        Console.ReadLine()
      End Try
    End Sub
    Public Shared Sub Main()
      Dim client As New Client()
      client.Run()
    End Sub

    Public Sub Reply(ByVal response As String) Implements SampleDuplexHelloCallback.Reply
      Console.WriteLine("Received output.")
      Console.WriteLine(Constants.vbCrLf & Constants.vbTab & response)
      Me.waitHandle.Set()
    End Sub
  End Class
End Namespace

Keterangan

ValidateMustUnderstand Gunakan properti untuk menonaktifkan validasi yang diberlakukan dari header pesan yang tiba. Dalam eksekusi normal, header pesan dibandingkan UnderstoodHeaders dengan properti untuk mengonfirmasi bahwa header yang tiba secara eksplisit ditangani oleh runtime objek panggilan balik. Atur ini ke false untuk menonaktifkan pemeriksaan ini. Ketika diatur ke false, aplikasi harus memeriksa header yang ditandai dengan MustUnderstand="true" dan mengembalikan kesalahan jika satu atau beberapa dari mereka tidak dipahami. Ini berguna ketika panggilan balik seharusnya menerima pesan SOAP masuk (misalnya, saat menggunakan pesan yang ditik atau tidak dititip) dan melakukan pemrosesan header kustom.

Berlaku untuk