diff --git a/ToolCollection/ClassWindream_allgemein.vb b/ToolCollection/ClassWindream_allgemein.vb index 96abb1f..ce8e7d5 100644 --- a/ToolCollection/ClassWindream_allgemein.vb +++ b/ToolCollection/ClassWindream_allgemein.vb @@ -95,10 +95,24 @@ Public Class ClassWindream_allgemein SessionAsUser = aSession If aSession.aLoggedin = True Then _Logger.Debug($"#Impersonate login [{UserName}] successfull!") - Return SessionAsUser + Me.oWMSession = aSession + CURRENToWMSession = aSession + CURRENToWMSession_Created = Now + Me.oObjekttypen = aSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument) + If Err.Number <> 0 Then + _Logger.Warn("Fehler beim Laden der Objekttypen nach Impersonate-Login: " & Err.Description) + Err.Clear() + End If + Me.oOrdnerTypen = aSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityFolder) + If Err.Number <> 0 Then + _Logger.Warn("Fehler beim Laden der Ordnertypen nach Impersonate-Login: " & Err.Description) + Err.Clear() + End If + Return True End If End If + Return False End Function ''' @@ -108,21 +122,36 @@ Public Class ClassWindream_allgemein ''' Public Function Init() As Boolean - If IsNothing(CURRENToWMSession) OrElse Not IsLoggedIn() Then + If IsNothing(CURRENToWMSession) OrElse Not CBool(CURRENToWMSession.aLoggedin) Then If WMLOGIN_DOMAIN <> String.Empty Then - GetWMSessionAsUser(WMLOGIN_DOMAIN, Me.GetCurrentServer, WMLOGIN_USER, WMLOGIN_PW) + Return GetWMSessionAsUser(WMLOGIN_DOMAIN, Me.GetCurrentServer, WMLOGIN_USER, WMLOGIN_PW) Else - GetWMSession() + Return GetWMSession() End If Else If My.Settings.vLogErrorsonly = False Then _Logger.Debug("WMSession already created!") oWMSession = CURRENToWMSession + If IsNothing(oObjekttypen) Then + oObjekttypen = oWMSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument) + End If + If IsNothing(oOrdnerTypen) Then + oOrdnerTypen = oWMSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityFolder) + End If Return True End If End Function Private Function GetWMSession() + If Not IsNothing(CURRENToWMSession) Then + Try + CURRENToWMSession.Logout() + Catch + ' ignorieren – Session war evtl. schon tot + End Try + CURRENToWMSession = Nothing + End If + Try Try ' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen