AuthenticationService.Logout-Methode (Action (generisch), Object)

Meldet einen authentifizierten Benutzer mit der angegebenen Rückrufmethode und dem angegebenen Benutzerzustand asynchron vom Server ab.

Namespace: System.ServiceModel.DomainServices.Client.ApplicationServices
Assembly: System.ServiceModel.DomainServices.Client (in system.servicemodel.domainservices.client.dll)

Verwendung

'Usage
Dim instance As AuthenticationService
Dim completeAction As Action(Of LogoutOperation)
Dim userState As Object
Dim returnValue As LogoutOperation

returnValue = instance.Logout(completeAction, userState)

Syntax

'Declaration
Public Function Logout ( _
    completeAction As Action(Of LogoutOperation), _
    userState As Object _
) As LogoutOperation
public LogoutOperation Logout (
    Action<LogoutOperation> completeAction,
    Object userState
)
public:
LogoutOperation^ Logout (
    Action<LogoutOperation^>^ completeAction, 
    Object^ userState
)
public LogoutOperation Logout (
    Action<LogoutOperation> completeAction, 
    Object userState
)
public function Logout (
    completeAction : Action<LogoutOperation>, 
    userState : Object
) : LogoutOperation

Parameter

  • completeAction
    Eine Aktion, die unmittelbar nach Abschluss des Vorgangs aufgerufen wird, und zwar in allen Fällen, ob bei Erfolg, Abbruch oder Fehler. Dieser Parameter ist optional.
  • userState
    Der Zustand, der in UserState festgelegt wird. Dieser Parameter ist optional.

Rückgabewert

Das Ergebnis des Vorgangs.

Beispiel

Das folgende Beispiel zeigt einen Aufruf der Logout-Methode mit einer Rückrufmethode.

Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
    SetControlVisibility(WebContext.Current.User.IsAuthenticated)
End Sub

Private Sub LoginButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim lp As LoginParameters = New LoginParameters(UserName.Text, Password.Password)
    WebContext.Current.Authentication.Login(lp, AddressOf Me.LoginOperation_Completed, Nothing)
    LoginButton.IsEnabled = False
    LoginResult.Text = ""
End Sub

Private Sub LoginOperation_Completed(ByVal lo As LoginOperation)
    If (lo.HasError) Then
        LoginResult.Text = lo.Error.Message
        LoginResult.Visibility = System.Windows.Visibility.Visible
        lo.MarkErrorAsHandled()
    ElseIf (lo.LoginSuccess = False) Then
        LoginResult.Text = "Login failed. Please check user name and password."
        LoginResult.Visibility = System.Windows.Visibility.Visible
    ElseIf (lo.LoginSuccess = True) Then
        SetControlVisibility(True)
    End If
    LoginButton.IsEnabled = True
End Sub

Private Sub SetControlVisibility(ByVal isAuthenticated As Boolean)
    If (isAuthenticated) Then
        LoginBorder.Visibility = System.Windows.Visibility.Collapsed
        WelcomeText.Text = "Welcome " + WebContext.Current.User.Name
        WelcomeText.Visibility = System.Windows.Visibility.Visible
        LogoutButton.Visibility = System.Windows.Visibility.Visible
    Else
        LoginBorder.Visibility = System.Windows.Visibility.Visible
        WelcomeText.Visibility = System.Windows.Visibility.Collapsed
        LogoutButton.Visibility = System.Windows.Visibility.Collapsed
    End If
End Sub

Private Sub LogoutButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    WebContext.Current.Authentication.Logout(AddressOf Me.LogoutOperation_Completed, Nothing)
End Sub

Private Sub LogoutOperation_Completed(ByVal lo As LogoutOperation)
    If (Not (lo.HasError)) Then
        SetControlVisibility(False)
    Else
        Dim ew As ErrorWindow = New ErrorWindow("Logout failed.", "Please try logging out again.")
        ew.Show()
        lo.MarkErrorAsHandled()
    End If
End Sub
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    SetControlVisibility(WebContext.Current.User.IsAuthenticated);
}

private void LoginButton_Click(object sender, RoutedEventArgs e)
{
    LoginParameters lp = new LoginParameters(UserName.Text, Password.Password);
    WebContext.Current.Authentication.Login(lp, this.LoginOperation_Completed, null);
    LoginButton.IsEnabled = false;
    LoginResult.Text = "";
}

private void LoginOperation_Completed(LoginOperation lo)
{
    if (lo.HasError)
    {
        LoginResult.Text = lo.Error.Message;
        LoginResult.Visibility = System.Windows.Visibility.Visible;
        lo.MarkErrorAsHandled();
    }
    else if (lo.LoginSuccess == false)
    {
        LoginResult.Text = "Login failed. Please check user name and password.";
        LoginResult.Visibility = System.Windows.Visibility.Visible;
    }
    else if (lo.LoginSuccess == true)
    {
        SetControlVisibility(true);
    }
    LoginButton.IsEnabled = true;
}

private void SetControlVisibility(bool isAuthenticated)
{
    if (isAuthenticated)
    {
        LoginBorder.Visibility = System.Windows.Visibility.Collapsed;
        WelcomeText.Text = "Welcome " + WebContext.Current.User.Name;
        WelcomeText.Visibility = System.Windows.Visibility.Visible;
        LogoutButton.Visibility = System.Windows.Visibility.Visible;
    }
    else
    {
        LoginBorder.Visibility = System.Windows.Visibility.Visible;
        WelcomeText.Visibility = System.Windows.Visibility.Collapsed;
        LogoutButton.Visibility = System.Windows.Visibility.Collapsed;
    }
}

private void LogoutButton_Click(object sender, RoutedEventArgs e)
{
    WebContext.Current.Authentication.Logout(this.LogoutOperation_Completed, null);
}

private void LogoutOperation_Completed(LogoutOperation lo)
{

    if (!lo.HasError)
    {
        SetControlVisibility(false);
    }
    else
    {
        ErrorWindow ew = new ErrorWindow("Logout failed.", "Please try logging out again.");
        ew.Show();
        lo.MarkErrorAsHandled();
    }
}

Ausnahmen

Ausnahmetyp Bedingung
InvalidOperationException

Diese Methode wird aufgerufen, während ein anderer asynchroner Vorgang noch verarbeitet wird.

Hinweise

Wenn diese Methode einen normalen Rückgabewert liefert, wird ggf. ein LoggedOut-Ereignis ausgelöst. Außerdem wird bei erfolgreichem Abschluss dieses Vorgangs User aktualisiert. Um einen Vorgangsfehler zu behandeln, kann MarkErrorAsHandled vom Vorgangsabschlussrückruf oder einem Completed-Ereignishandler aufgerufen werden.

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht sichergestellt.

Plattformen

Entwicklungsplattformen

Windows XP Home Edition, Windows XP Professional, Windows Server 2003 , Windows Server 2008 und Windows 2000

Zielplattformen

Change History

Siehe auch

Verweis

AuthenticationService-Klasse
AuthenticationService-Member
System.ServiceModel.DomainServices.Client.ApplicationServices-Namespace