Compare commits
8 Commits
master
...
Update-Net
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b36459e85 | ||
|
|
09673ffd70 | ||
|
|
bff4ad10c9 | ||
|
|
a409e1fd44 | ||
|
|
c7bb645f94 | ||
|
|
e7a7c45430 | ||
|
|
c0054d41ae | ||
|
|
1d31298d8d |
@@ -49,6 +49,9 @@
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
@@ -79,7 +82,6 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Base\BaseClass.vb" />
|
||||
<Compile Include="Base\BaseUtils.vb" />
|
||||
<Compile Include="DocumentPathHandler.vb" />
|
||||
<Compile Include="ECM\ECM.vb" />
|
||||
<Compile Include="Encryption\Compression.vb" />
|
||||
<Compile Include="Encryption\Encryption.vb" />
|
||||
@@ -90,7 +92,6 @@
|
||||
<Compile Include="FileWatcher\FileWatcherFilters.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcherProperties.vb" />
|
||||
<Compile Include="IDB\Constants.vb" />
|
||||
<Compile Include="Map_Drive.vb" />
|
||||
<Compile Include="MimeEx.vb" />
|
||||
<Compile Include="StringFunctions.vb" />
|
||||
<Compile Include="WindowsEx.vb" />
|
||||
@@ -137,20 +138,12 @@
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="README.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NLog">
|
||||
<Version>5.0.5</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NuGet.CommandLine">
|
||||
<Version>6.13.2</Version>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
@@ -1,392 +0,0 @@
|
||||
Imports System.IO
|
||||
Imports DigitalData.Modules.Logging
|
||||
''' <summary>
|
||||
''' Zentrale Klasse für Dokumentenpfad-Verwaltung mit optionalem Laufwerks-Mapping und Temp-Kopie
|
||||
''' </summary>
|
||||
Public Class DocumentPathHandler
|
||||
|
||||
Private ReadOnly _Logger As Logger
|
||||
Private ReadOnly _LogConfig As LogConfig
|
||||
Private _mappedDrive As String = ""
|
||||
Private _clsmapDrive As Map_Drive
|
||||
|
||||
Public Sub New(LogConfig As LogConfig)
|
||||
_LogConfig = LogConfig
|
||||
_Logger = LogConfig.GetLogger()
|
||||
_clsmapDrive = New Map_Drive(LogConfig)
|
||||
End Sub
|
||||
|
||||
Private Function EnsureTempFolder(ByRef tempFolder As String, ByRef errorMessage As String) As Boolean
|
||||
Try
|
||||
_Logger.Debug($"📂 Überprüfe Temp-Ordner: [{tempFolder}]")
|
||||
If String.IsNullOrWhiteSpace(tempFolder) Then
|
||||
_Logger.Debug("⚠️ Temp-Ordner nicht konfiguriert, verwende TEMP_DOCUMENT_FOLDER aus AppSettings")
|
||||
tempFolder = TEMP_DOCUMENT_FOLDER
|
||||
End If
|
||||
|
||||
' Fallback, falls global nichts konfiguriert ist
|
||||
If String.IsNullOrWhiteSpace(tempFolder) Then
|
||||
tempFolder = Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
||||
"Digital Data",
|
||||
"taskFLOW",
|
||||
"DocumentViewer",
|
||||
"Temp")
|
||||
_Logger.Info($"⚠️ TEMP_DOCUMENT_FOLDER war leer - verwende Fallback: [{tempFolder}]")
|
||||
TEMP_DOCUMENT_FOLDER = tempFolder
|
||||
End If
|
||||
|
||||
If Not Directory.Exists(tempFolder) Then
|
||||
Directory.CreateDirectory(tempFolder)
|
||||
_Logger.Info($"📁 Temp-Ordner erstellt: [{tempFolder}]")
|
||||
End If
|
||||
|
||||
If Not Directory.Exists(tempFolder) Then
|
||||
errorMessage = $"Temp-Ordner konnte nicht erstellt werden: [{tempFolder}]"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
errorMessage = $"Fehler bei Temp-Ordner-Initialisierung: {ex.Message}"
|
||||
_Logger.Error($"❌ {errorMessage}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
Public Sub CleanupTempFolder()
|
||||
Try
|
||||
If String.IsNullOrEmpty(TEMP_DOCUMENT_FOLDER) Then
|
||||
_Logger.Debug("TEMP_DOCUMENT_FOLDER ist nicht gesetzt → Kein Cleanup erforderlich")
|
||||
Return
|
||||
End If
|
||||
|
||||
If Not System.IO.Directory.Exists(TEMP_DOCUMENT_FOLDER) Then
|
||||
_Logger.Debug($"Temp-Ordner [{TEMP_DOCUMENT_FOLDER}] existiert nicht → Kein Cleanup erforderlich")
|
||||
Return
|
||||
End If
|
||||
|
||||
' Alle Dateien im Ordner ermitteln
|
||||
Dim files As String() = System.IO.Directory.GetFiles(TEMP_DOCUMENT_FOLDER)
|
||||
|
||||
If files.Length = 0 Then
|
||||
_Logger.Debug($"Temp-Ordner [{TEMP_DOCUMENT_FOLDER}] ist bereits leer")
|
||||
Return
|
||||
End If
|
||||
|
||||
' Alle Dateien löschen
|
||||
Dim deletedCount As Integer = 0
|
||||
Dim errorCount As Integer = 0
|
||||
|
||||
For Each filePath As String In files
|
||||
Try
|
||||
System.IO.File.Delete(filePath)
|
||||
deletedCount += 1
|
||||
_Logger.Debug($"Datei gelöscht: [{System.IO.Path.GetFileName(filePath)}]")
|
||||
Catch fileEx As Exception
|
||||
errorCount += 1
|
||||
_Logger.Warn($"⚠️ Datei konnte nicht gelöscht werden: [{System.IO.Path.GetFileName(filePath)}] - {fileEx.Message}")
|
||||
End Try
|
||||
Next
|
||||
|
||||
If errorCount = 0 Then
|
||||
_Logger.Debug($"✓ Temp-Ordner bereinigt: {deletedCount} Datei(en) gelöscht")
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Temp-Ordner teilweise bereinigt: {deletedCount} gelöscht, {errorCount} Fehler")
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"❌ Fehler beim Bereinigen des Temp-Ordners: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Verarbeitet einen Dokumentenpfad: Optional Mapping, dann Temp-Kopie
|
||||
''' </summary>
|
||||
''' <param name="sourcePath">Quell-Pfad der Datei (UNC oder lokal)</param>
|
||||
''' <param name="options">Optionen für die Verarbeitung</param>
|
||||
''' <returns>DocumentPathResult mit finalem Pfad und Mapping-Info</returns>
|
||||
Public Function ProcessDocumentPath(sourcePath As String, options As DocumentPathOptions) As DocumentPathResult
|
||||
Dim result As New DocumentPathResult With {
|
||||
.SourcePath = sourcePath,
|
||||
.FinalPath = sourcePath,
|
||||
.Success = False,
|
||||
.WasMapped = False,
|
||||
.WasCopiedToTemp = False
|
||||
}
|
||||
|
||||
Try
|
||||
' Validierung
|
||||
If String.IsNullOrEmpty(sourcePath) Then
|
||||
result.ErrorMessage = "Quell-Pfad ist leer"
|
||||
_Logger.Error("❌ ProcessDocumentPath: Quell-Pfad ist leer")
|
||||
Return result
|
||||
End If
|
||||
|
||||
Dim workingPath As String = sourcePath
|
||||
|
||||
' ========== SCHRITT 1: OPTIONALES LAUFWERKS-MAPPING ==========
|
||||
If options.EnableMapping AndAlso Not String.IsNullOrEmpty(options.WMSuffix) Then
|
||||
Dim mappingResult = TryMapNetworkDrive(sourcePath, options)
|
||||
If mappingResult.Success Then
|
||||
workingPath = mappingResult.MappedPath
|
||||
_mappedDrive = mappingResult.DriveLetter
|
||||
result.WasMapped = True
|
||||
result.MappedDrive = _mappedDrive
|
||||
_Logger.Info($"✓ Laufwerk gemappt: {_mappedDrive}")
|
||||
Else
|
||||
_Logger.Warn("⚠️ Laufwerks-Mapping fehlgeschlagen - verwende Original-UNC-Pfad")
|
||||
workingPath = sourcePath
|
||||
End If
|
||||
End If
|
||||
|
||||
' ========== SCHRITT 2: PRÜFEN OB DATEI EXISTIERT ==========
|
||||
If Not File.Exists(workingPath) Then
|
||||
result.ErrorMessage = $"Datei nicht gefunden: [{workingPath}]"
|
||||
_Logger.Error($"❌ {result.ErrorMessage}")
|
||||
|
||||
' Cleanup bei Fehler
|
||||
If result.WasMapped Then
|
||||
UnmapDrive()
|
||||
End If
|
||||
|
||||
Return result
|
||||
End If
|
||||
|
||||
' ========== SCHRITT 3: OPTIONALE TEMP-KOPIE ==========
|
||||
If options.CopyToTemp Then
|
||||
_Logger.Debug($"📂 Starte Temp-Kopie für: [{workingPath}]")
|
||||
Dim tempResult = CopyToTempFolder(workingPath, options.TempFolder)
|
||||
If tempResult.Success Then
|
||||
result.FinalPath = tempResult.TempPath
|
||||
result.WasCopiedToTemp = True
|
||||
result.TempPath = tempResult.TempPath
|
||||
_Logger.Info($"✓ Datei in Temp kopiert: [{Path.GetFileName(tempResult.TempPath)}]")
|
||||
|
||||
' Laufwerk unmappen nach erfolgreicher Kopie
|
||||
If result.WasMapped AndAlso options.UnmapAfterCopy Then
|
||||
UnmapDrive()
|
||||
result.WasMapped = False
|
||||
End If
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Temp-Kopie fehlgeschlagen: {tempResult.ErrorMessage}")
|
||||
|
||||
' WICHTIG: Nicht den gemappten Pfad behalten, wenn danach ungemappt wird.
|
||||
' Fallback immer auf stabilen Originalpfad (UNC).
|
||||
result.FinalPath = sourcePath
|
||||
result.WasCopiedToTemp = False
|
||||
result.TempPath = String.Empty
|
||||
|
||||
If result.WasMapped Then
|
||||
UnmapDrive()
|
||||
result.WasMapped = False
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
result.FinalPath = workingPath
|
||||
_Logger.Debug($"📄 Verwende Pfad ohne Temp-Kopie: [{workingPath}]")
|
||||
End If
|
||||
|
||||
result.Success = True
|
||||
Return result
|
||||
|
||||
Catch ex As Exception
|
||||
result.ErrorMessage = $"Unerwarteter Fehler: {ex.Message}"
|
||||
_Logger.Error($"❌ ProcessDocumentPath: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
|
||||
' Cleanup bei Exception
|
||||
If result.WasMapped Then
|
||||
UnmapDrive()
|
||||
End If
|
||||
|
||||
Return result
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Versucht ein Netzlaufwerk zu mappen
|
||||
''' </summary>
|
||||
Private Function TryMapNetworkDrive(sourcePath As String, options As DocumentPathOptions) As MappingResult
|
||||
Dim result As New MappingResult With {.Success = False}
|
||||
|
||||
Try
|
||||
' Prüfen ob Pfad mit WMSUFFIX beginnt
|
||||
If Not sourcePath.StartsWith(options.WMSuffix, StringComparison.OrdinalIgnoreCase) Then
|
||||
_Logger.Debug($"📄 Pfad beginnt nicht mit WMSUFFIX - kein Mapping erforderlich")
|
||||
Return result
|
||||
End If
|
||||
|
||||
_Logger.Debug($"📂 WMSUFFIX erkannt - starte Laufwerks-Mapping")
|
||||
|
||||
' Laufwerk mappen
|
||||
Dim mappedDrive As String = ""
|
||||
|
||||
If Not String.IsNullOrEmpty(options.SpecificDrive) AndAlso options.SpecificDrive.Length = 1 Then
|
||||
' Spezifisches Laufwerk
|
||||
If _clsmapDrive.MapSpecificDrive(options.SpecificDrive, options.DriveBlacklist, options.WMSuffix) Then
|
||||
mappedDrive = options.SpecificDrive & ":"
|
||||
End If
|
||||
Else
|
||||
' Automatisches Mapping
|
||||
mappedDrive = _clsmapDrive.MapDriveAutomatic(options.DriveBlacklist, options.WMSuffix)
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(mappedDrive) Then
|
||||
_Logger.Warn("⚠️ Kein Laufwerk gemappt")
|
||||
Return result
|
||||
End If
|
||||
|
||||
' Pfad umschreiben
|
||||
Dim relativePath As String = sourcePath.Substring(options.WMSuffix.Length)
|
||||
If relativePath.StartsWith("\") Then
|
||||
relativePath = relativePath.Substring(1)
|
||||
End If
|
||||
|
||||
Dim mappedPath As String = mappedDrive.TrimEnd(":"c, "\"c) & ":\" & relativePath
|
||||
|
||||
_Logger.Debug($"📄 Original: [{sourcePath}]")
|
||||
_Logger.Debug($"📄 Gemappt: [{mappedPath}]")
|
||||
|
||||
result.Success = True
|
||||
result.DriveLetter = mappedDrive
|
||||
result.MappedPath = mappedPath
|
||||
Return result
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Mapping: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return result
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function CopyToTempFolder(sourcePath As String, tempFolder As String) As TempCopyResult
|
||||
Dim result As New TempCopyResult With {.Success = False}
|
||||
|
||||
Try
|
||||
Dim configuredTempFolder As String = tempFolder
|
||||
Dim globalTempFolder As String = TEMP_DOCUMENT_FOLDER
|
||||
|
||||
' Temp-Ordner validieren/initialisieren (kann tempFolder per ByRef setzen)
|
||||
If Not EnsureTempFolder(tempFolder, result.ErrorMessage) Then
|
||||
_Logger.Warn($"⚠️ {result.ErrorMessage}")
|
||||
_Logger.Warn($"[TempCopy] InputTemp=[{If(String.IsNullOrWhiteSpace(configuredTempFolder), "<leer>", configuredTempFolder)}], GlobalTemp=[{If(String.IsNullOrWhiteSpace(globalTempFolder), "<leer>", globalTempFolder)}]")
|
||||
Return result
|
||||
End If
|
||||
|
||||
' NEU: Effektiven Zielordner immer transparent loggen
|
||||
_Logger.Info($"[TempCopy] Effektiver Temp-Ordner: [{tempFolder}]")
|
||||
_Logger.Debug($"[TempCopy] InputTemp=[{If(String.IsNullOrWhiteSpace(configuredTempFolder), "<leer>", configuredTempFolder)}], GlobalTemp=[{If(String.IsNullOrWhiteSpace(globalTempFolder), "<leer>", globalTempFolder)}]")
|
||||
|
||||
' Eindeutigen Dateinamen generieren
|
||||
Dim originalFileName As String = Path.GetFileName(sourcePath)
|
||||
Dim fileNameWithoutExt As String = Path.GetFileNameWithoutExtension(originalFileName)
|
||||
Dim extension As String = Path.GetExtension(originalFileName)
|
||||
Dim timestamp As String = DateTime.Now.ToString("yyyyMMdd_HHmmss_fff")
|
||||
Dim uniqueFileName As String = $"{fileNameWithoutExt}_{timestamp}{extension}"
|
||||
Dim targetPath As String = Path.Combine(tempFolder, uniqueFileName)
|
||||
|
||||
_Logger.Debug($"📄 Kopiere nach Temp:")
|
||||
_Logger.Debug($" Von: [{sourcePath}]")
|
||||
_Logger.Debug($" Nach: [{targetPath}]")
|
||||
|
||||
File.Copy(sourcePath, targetPath, overwrite:=True)
|
||||
|
||||
result.Success = True
|
||||
result.TempPath = targetPath
|
||||
result.TempFileName = uniqueFileName
|
||||
Return result
|
||||
|
||||
Catch ex As Exception
|
||||
result.ErrorMessage = $"Fehler beim Kopieren: {ex.Message}"
|
||||
_Logger.Error($"❌ {result.ErrorMessage}")
|
||||
_Logger.Error(ex)
|
||||
Return result
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Trennt das gemappte Laufwerk
|
||||
''' </summary>
|
||||
Public Sub UnmapDrive()
|
||||
If Not String.IsNullOrEmpty(_mappedDrive) Then
|
||||
Try
|
||||
If _clsmapDrive.DisconnectNetworkDrive(_mappedDrive, force:=True) Then
|
||||
_Logger.Info($"🔌 Laufwerk {_mappedDrive} getrennt")
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Warnung beim Trennen von {_mappedDrive}")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"Fehler beim Trennen von {_mappedDrive}: {ex.Message}")
|
||||
Finally
|
||||
_mappedDrive = ""
|
||||
End Try
|
||||
End If
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Cleanup-Methode (z.B. beim Schließen des Forms)
|
||||
''' </summary>
|
||||
Public Sub Cleanup()
|
||||
UnmapDrive()
|
||||
End Sub
|
||||
|
||||
#Region "Nested Classes für Optionen und Ergebnisse"
|
||||
|
||||
''' <summary>
|
||||
''' Optionen für die Dokumentenpfad-Verarbeitung
|
||||
''' </summary>
|
||||
Public Class DocumentPathOptions
|
||||
''' <summary>Soll Laufwerks-Mapping versucht werden?</summary>
|
||||
Public Property EnableMapping As Boolean = False
|
||||
|
||||
''' <summary>WMSUFFIX für Mapping-Erkennung (z.B. "\\windream\objects")</summary>
|
||||
Public Property WMSuffix As String = ""
|
||||
|
||||
''' <summary>Spezifischer Laufwerksbuchstabe (z.B. "V") oder leer für automatisch</summary>
|
||||
Public Property SpecificDrive As String = ""
|
||||
|
||||
''' <summary>Blacklist für Laufwerksbuchstaben (z.B. "Y,M,V")</summary>
|
||||
Public Property DriveBlacklist As String = ""
|
||||
|
||||
''' <summary>Soll Datei in Temp kopiert werden?</summary>
|
||||
Public Property CopyToTemp As Boolean = False
|
||||
|
||||
''' <summary>Temp-Ordner-Pfad</summary>
|
||||
Public Property TempFolder As String = ""
|
||||
|
||||
''' <summary>Laufwerk nach erfolgreicher Temp-Kopie unmappen?</summary>
|
||||
Public Property UnmapAfterCopy As Boolean = True
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
''' Ergebnis der Dokumentenpfad-Verarbeitung
|
||||
''' </summary>
|
||||
Public Class DocumentPathResult
|
||||
Public Property Success As Boolean
|
||||
Public Property SourcePath As String
|
||||
Public Property FinalPath As String
|
||||
Public Property ErrorMessage As String
|
||||
Public Property WasMapped As Boolean
|
||||
Public Property MappedDrive As String
|
||||
Public Property WasCopiedToTemp As Boolean
|
||||
Public Property TempPath As String
|
||||
End Class
|
||||
|
||||
Private Class MappingResult
|
||||
Public Property Success As Boolean
|
||||
Public Property DriveLetter As String
|
||||
Public Property MappedPath As String
|
||||
End Class
|
||||
|
||||
Private Class TempCopyResult
|
||||
Public Property Success As Boolean
|
||||
Public Property TempPath As String
|
||||
Public Property TempFileName As String
|
||||
Public Property ErrorMessage As String
|
||||
End Class
|
||||
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
@@ -1,559 +0,0 @@
|
||||
Imports System.IO
|
||||
Imports System.Runtime.InteropServices
|
||||
Imports DigitalData.Modules.Logging
|
||||
Public Class Map_Drive
|
||||
Private ReadOnly _Logger As Logger
|
||||
Private ReadOnly _LogConfig As LogConfig
|
||||
#Region "Windows API Deklarationen"
|
||||
<DllImport("mpr.dll", CharSet:=CharSet.Auto)>
|
||||
Private Shared Function WNetAddConnection2(ByRef lpNetResource As NETRESOURCE,
|
||||
ByVal lpPassword As String,
|
||||
ByVal lpUsername As String,
|
||||
ByVal dwFlags As Integer) As Integer
|
||||
End Function
|
||||
|
||||
<DllImport("mpr.dll", CharSet:=CharSet.Auto)>
|
||||
Private Shared Function WNetCancelConnection2(ByVal lpName As String,
|
||||
ByVal dwFlags As Integer,
|
||||
ByVal fForce As Boolean) As Integer
|
||||
End Function
|
||||
|
||||
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)>
|
||||
Private Structure NETRESOURCE
|
||||
Public dwScope As Integer
|
||||
Public dwType As Integer
|
||||
Public dwDisplayType As Integer
|
||||
Public dwUsage As Integer
|
||||
Public lpLocalName As String
|
||||
Public lpRemoteName As String
|
||||
Public lpComment As String
|
||||
Public lpProvider As String
|
||||
End Structure
|
||||
|
||||
Private Const RESOURCETYPE_DISK As Integer = 1
|
||||
Private Const CONNECT_UPDATE_PROFILE As Integer = 1
|
||||
Private Const ERROR_SUCCESS As Integer = 0
|
||||
Private Const ERROR_ALREADY_ASSIGNED As Integer = 85
|
||||
#End Region
|
||||
Public Sub New(LogConfig As LogConfig)
|
||||
_LogConfig = LogConfig
|
||||
_Logger = LogConfig.GetLogger()
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Struktur für Netzlaufwerk-Informationen
|
||||
''' </summary>
|
||||
Public Structure NetworkDriveInfo
|
||||
Public DriveLetter As String
|
||||
Public NetworkPath As String
|
||||
Public DriveType As IO.DriveType
|
||||
Public IsReady As Boolean
|
||||
Public TotalSize As Long
|
||||
Public FreeSpace As Long
|
||||
End Structure
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt den nächsten freien Laufwerksbuchstaben (alphabetisch absteigend von Z bis A)
|
||||
''' </summary>
|
||||
''' <param name="blacklist">Liste der nicht erlaubten Laufwerksbuchstaben (z.B. "Y,M,V")</param>
|
||||
''' <returns>Nächster freier Laufwerksbuchstabe mit Doppelpunkt (z.B. "Z:") oder String.Empty wenn keiner frei</returns>
|
||||
Public Function GetNextFreeDriveLetter(Optional blacklist As String = "") As String
|
||||
Try
|
||||
' Blacklist verarbeiten (Großbuchstaben ohne Doppelpunkte)
|
||||
Dim blacklistArray As New List(Of Char)
|
||||
If Not String.IsNullOrEmpty(blacklist) Then
|
||||
For Each item In blacklist.Split(","c)
|
||||
Dim letter = item.Trim().ToUpper().Replace(":", "")
|
||||
If letter.Length = 1 AndAlso Char.IsLetter(letter(0)) Then
|
||||
blacklistArray.Add(letter(0))
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
' Alle aktuell verwendeten Laufwerksbuchstaben ermitteln
|
||||
Dim usedDrives As New List(Of Char)
|
||||
For Each drive As IO.DriveInfo In IO.DriveInfo.GetDrives()
|
||||
Dim letter As Char = drive.Name(0)
|
||||
usedDrives.Add(Char.ToUpper(letter))
|
||||
Next
|
||||
|
||||
' Alphabetisch absteigend von Z bis A durchgehen
|
||||
For i As Integer = Asc("Z"c) To Asc("A"c) Step -1
|
||||
Dim currentLetter As Char = Chr(i)
|
||||
|
||||
' Prüfen ob Buchstabe verfügbar ist
|
||||
If Not usedDrives.Contains(currentLetter) AndAlso Not blacklistArray.Contains(currentLetter) Then
|
||||
_Logger.Debug($"Nächster freier Laufwerksbuchstabe gefunden: {currentLetter}:")
|
||||
Return currentLetter & ":"
|
||||
End If
|
||||
Next
|
||||
|
||||
_Logger.Warn("Kein freier Laufwerksbuchstabe gefunden!")
|
||||
Return String.Empty
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Ermitteln des nächsten freien Laufwerksbuchstabens: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Prüft ob ein Laufwerksbuchstabe verfügbar ist (nicht verwendet und nicht in Blacklist)
|
||||
''' </summary>
|
||||
''' <param name="driveLetter">Zu prüfender Laufwerksbuchstabe</param>
|
||||
''' <param name="blacklist">Liste der nicht erlaubten Laufwerksbuchstaben</param>
|
||||
''' <returns>True wenn verfügbar, False wenn bereits verwendet oder in Blacklist</returns>
|
||||
Public Function IsDriveLetterAvailable(driveLetter As String, Optional blacklist As String = "") As Boolean
|
||||
Try
|
||||
' Formatierung sicherstellen
|
||||
driveLetter = driveLetter.Trim().ToUpper().Replace(":", "")
|
||||
If driveLetter.Length <> 1 OrElse Not Char.IsLetter(driveLetter(0)) Then
|
||||
_Logger.Warn($"Ungültiger Laufwerksbuchstabe: {driveLetter}")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim letter As Char = driveLetter(0)
|
||||
|
||||
' Blacklist prüfen
|
||||
If Not String.IsNullOrEmpty(blacklist) Then
|
||||
For Each item In blacklist.Split(","c)
|
||||
Dim blacklistedLetter = item.Trim().ToUpper().Replace(":", "")
|
||||
If blacklistedLetter.Length = 1 AndAlso blacklistedLetter(0) = letter Then
|
||||
_Logger.Debug($"Laufwerk {letter}: ist in der Blacklist")
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
' Prüfen ob bereits verwendet
|
||||
For Each drive As IO.DriveInfo In IO.DriveInfo.GetDrives()
|
||||
If Char.ToUpper(drive.Name(0)) = letter Then
|
||||
_Logger.Debug($"Laufwerk {letter}: ist bereits verwendet")
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Prüfen der Laufwerksverfügbarkeit: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Mappt ein Netzlaufwerk mit automatischer Laufwerksbuchstabenwahl oder spezifischem Buchstaben
|
||||
''' </summary>
|
||||
''' <param name="driveLetter">Gewünschter Laufwerksbuchstabe (leer = automatisch den nächsten freien wählen)</param>
|
||||
''' <param name="networkPath">UNC-Pfad des Netzwerkshares</param>
|
||||
''' <param name="blacklist">Komma-getrennte Liste verbotener Laufwerksbuchstaben (z.B. "Y,M,V")</param>
|
||||
''' <param name="userName">Optionaler Benutzername für Authentifizierung</param>
|
||||
''' <param name="password">Optionales Passwort für Authentifizierung</param>
|
||||
''' <param name="persistent">Soll das Mapping persistent sein?</param>
|
||||
''' <returns>Verwendeter Laufwerksbuchstabe bei Erfolg, String.Empty bei Fehler</returns>
|
||||
Public Function MapNetworkDrive(driveLetter As String,
|
||||
networkPath As String,
|
||||
Optional blacklist As String = "",
|
||||
Optional userName As String = Nothing,
|
||||
Optional password As String = Nothing,
|
||||
Optional persistent As Boolean = True) As String
|
||||
Try
|
||||
Dim targetDriveLetter As String = ""
|
||||
|
||||
' Szenario 1: Kein Laufwerksbuchstabe angegeben -> Automatische Auswahl
|
||||
If String.IsNullOrEmpty(driveLetter) Then
|
||||
_Logger.Info("Kein Laufwerksbuchstabe angegeben - suche nächsten freien Buchstaben...")
|
||||
targetDriveLetter = GetNextFreeDriveLetter(blacklist)
|
||||
|
||||
If String.IsNullOrEmpty(targetDriveLetter) Then
|
||||
_Logger.Error("❌ Kein freier Laufwerksbuchstabe verfügbar!")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
_Logger.Info($"Automatisch gewählter Laufwerksbuchstabe: {targetDriveLetter}")
|
||||
Else
|
||||
' Szenario 2: Spezifischer Laufwerksbuchstabe angegeben
|
||||
targetDriveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not targetDriveLetter.EndsWith(":") Then
|
||||
targetDriveLetter &= ":"
|
||||
End If
|
||||
|
||||
' ========== NEU: Prüfen ob Laufwerk verfügbar ist ==========
|
||||
If Not IsDriveLetterAvailable(targetDriveLetter, blacklist) Then
|
||||
_Logger.Warn($"⚠️ Laufwerk {targetDriveLetter} ist nicht verfügbar (bereits verwendet oder in Blacklist)")
|
||||
' NICHT abbrechen - weiter versuchen (alte Logik beibehalten)
|
||||
End If
|
||||
' ========== ENDE NEU ==========
|
||||
End If
|
||||
|
||||
' ========== NEU: Prüfung ob Laufwerk bereits existiert ==========
|
||||
Dim driveExists As Boolean = False
|
||||
Try
|
||||
Dim driveInfo As New System.IO.DriveInfo(targetDriveLetter)
|
||||
driveExists = driveInfo.IsReady
|
||||
Catch
|
||||
' Laufwerk existiert nicht - das ist OK
|
||||
driveExists = False
|
||||
End Try
|
||||
|
||||
' Nur trennen wenn Laufwerk wirklich existiert
|
||||
If driveExists Then
|
||||
_Logger.Debug($"ℹ️ Laufwerk {targetDriveLetter} existiert bereits - wird getrennt")
|
||||
DisconnectNetworkDrive(targetDriveLetter, force:=True)
|
||||
Else
|
||||
_Logger.Debug($"✓ Laufwerk {targetDriveLetter} existiert noch nicht - kein Disconnect nötig")
|
||||
End If
|
||||
' ========== ENDE NEU ==========
|
||||
|
||||
' Laufwerk mappen (bestehende Logik)
|
||||
If MapNetworkDriveInternal(targetDriveLetter, networkPath, userName, password, persistent) Then
|
||||
_Logger.Info($"✓ Netzlaufwerk {targetDriveLetter} erfolgreich gemappt zu {networkPath}")
|
||||
Return targetDriveLetter
|
||||
Else
|
||||
_Logger.Error($"❌ Fehler beim Mappen von {targetDriveLetter}")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"❌ Fehler in MapNetworkDrive: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Interne Methode zum tatsächlichen Mappen eines Netzlaufwerks
|
||||
''' </summary>
|
||||
Private Function MapNetworkDriveInternal(driveLetter As String,
|
||||
networkPath As String,
|
||||
userName As String,
|
||||
password As String,
|
||||
persistent As Boolean) As Boolean
|
||||
Try
|
||||
' Erst trennen falls vorhanden (ohne Fehler wenn nicht vorhanden)
|
||||
DisconnectNetworkDrive(driveLetter, True)
|
||||
|
||||
' NETRESOURCE-Struktur vorbereiten
|
||||
Dim netResource As New NETRESOURCE With {
|
||||
.dwType = RESOURCETYPE_DISK,
|
||||
.lpLocalName = driveLetter,
|
||||
.lpRemoteName = networkPath
|
||||
}
|
||||
|
||||
Dim flags As Integer = If(persistent, CONNECT_UPDATE_PROFILE, 0)
|
||||
|
||||
' WICHTIG: Credentials als Nothing übergeben = Verwende aktuelle Windows-Credentials
|
||||
' Wenn der Share öffentlich oder mit aktuellen Credentials erreichbar ist, funktioniert es
|
||||
Dim result As Integer = WNetAddConnection2(netResource, password, userName, flags)
|
||||
|
||||
Select Case result
|
||||
Case ERROR_SUCCESS
|
||||
_Logger.Debug($"✓ Laufwerk {driveLetter} erfolgreich gemappt")
|
||||
Return True
|
||||
|
||||
Case 1326 ' ERROR_LOGON_FAILURE
|
||||
_Logger.Error($"❌ Authentifizierungsfehler (1326): Anmeldung fehlgeschlagen für [{networkPath}]")
|
||||
_Logger.Error($" → Der UNC-Pfad erfordert möglicherweise spezielle Credentials")
|
||||
_Logger.Error($" → Oder der aktuelle Benutzer hat keine Berechtigung")
|
||||
Return False
|
||||
|
||||
Case 53 ' ERROR_BAD_NETPATH
|
||||
_Logger.Error($"❌ Netzwerkpfad nicht gefunden (53): [{networkPath}]")
|
||||
Return False
|
||||
|
||||
Case 67 ' ERROR_BAD_NET_NAME
|
||||
_Logger.Error($"❌ Netzwerkname ungültig (67): [{networkPath}]")
|
||||
Return False
|
||||
|
||||
Case 85 ' ERROR_ALREADY_ASSIGNED
|
||||
_Logger.Warn($"⚠️ Laufwerk {driveLetter} ist bereits zugewiesen (85)")
|
||||
' Versuche es zu trennen und erneut zu verbinden
|
||||
DisconnectNetworkDrive(driveLetter, force:=True)
|
||||
System.Threading.Thread.Sleep(500) ' Kurze Pause
|
||||
result = WNetAddConnection2(netResource, password, userName, flags)
|
||||
If result = ERROR_SUCCESS Then
|
||||
_Logger.Info($"✓ Laufwerk {driveLetter} nach erneutem Versuch erfolgreich gemappt")
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
Case Else
|
||||
_Logger.Error($"❌ WNetAddConnection2 Error Code: {result}")
|
||||
Return False
|
||||
End Select
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler in MapNetworkDriveInternal: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Test-Funktion um UNC-Pfad-Zugriff zu prüfen
|
||||
''' </summary>
|
||||
Public Function TestUNCAccess(uncPath As String) As Boolean
|
||||
Try
|
||||
_Logger.Info($"🔍 Teste Zugriff auf UNC-Pfad: [{uncPath}]")
|
||||
|
||||
' Teste ob Pfad existiert und erreichbar ist
|
||||
If System.IO.Directory.Exists(uncPath) Then
|
||||
_Logger.Info($"✓ UNC-Pfad ist direkt erreichbar ohne Mapping")
|
||||
|
||||
' Teste Lese-Berechtigung
|
||||
Try
|
||||
Dim files = System.IO.Directory.GetFiles(uncPath)
|
||||
_Logger.Info($"✓ Lese-Berechtigung vorhanden ({files.Length} Dateien gefunden)")
|
||||
Return True
|
||||
Catch permEx As UnauthorizedAccessException
|
||||
_Logger.Error($"❌ Keine Lese-Berechtigung: {permEx.Message}")
|
||||
Return False
|
||||
End Try
|
||||
Else
|
||||
_Logger.Error($"❌ UNC-Pfad nicht erreichbar oder existiert nicht")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"❌ Fehler beim Testen des UNC-Zugriffs: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Trennt ein Netzlaufwerk mit Windows-API
|
||||
''' </summary>
|
||||
Public Function DisconnectNetworkDrive(driveLetter As String, Optional force As Boolean = True) As Boolean
|
||||
Try
|
||||
' Formatierung sicherstellen
|
||||
driveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not driveLetter.EndsWith(":") Then
|
||||
driveLetter &= ":"
|
||||
End If
|
||||
Dim driveExists As Boolean = False
|
||||
Try
|
||||
Dim driveInfo As New System.IO.DriveInfo(driveLetter)
|
||||
driveExists = driveInfo.IsReady
|
||||
Catch
|
||||
driveExists = False
|
||||
End Try
|
||||
|
||||
If Not driveExists Then
|
||||
_Logger.Debug($"ℹ️ Laufwerk {driveLetter} existiert nicht - Disconnect übersprungen")
|
||||
Return True ' Kein Fehler, da das gewünschte Ergebnis erreicht ist (Laufwerk ist nicht verbunden)
|
||||
End If
|
||||
|
||||
Dim flags As Integer = CONNECT_UPDATE_PROFILE
|
||||
Dim result As Integer = WNetCancelConnection2(driveLetter, flags, force)
|
||||
|
||||
If result = ERROR_SUCCESS Then
|
||||
_Logger.Debug($"✓ Netzlaufwerk {driveLetter} erfolgreich getrennt")
|
||||
Return True
|
||||
ElseIf result = 2250 Then ' ERROR_NOT_CONNECTED
|
||||
' Von WARN auf DEBUG herabgestuft, da es kein echter Fehler ist
|
||||
_Logger.Debug($"ℹ️ Laufwerk {driveLetter} war nicht verbunden (Code 2250)")
|
||||
Return True
|
||||
ElseIf result = ERROR_ALREADY_ASSIGNED Then
|
||||
_Logger.Debug($"ℹ️ Netzlaufwerk {driveLetter} war nicht verbunden")
|
||||
Return True
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Warnung beim Trennen von {driveLetter}: Error Code {result}")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"⚠️ Fehler beim Trennen von {driveLetter} (ignoriert): {ex.Message}")
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt alle gemappten Netzlaufwerke
|
||||
''' </summary>
|
||||
Public Function GetMappedNetworkDrives() As List(Of NetworkDriveInfo)
|
||||
Dim mappedDrives As New List(Of NetworkDriveInfo)
|
||||
|
||||
Try
|
||||
For Each drive As IO.DriveInfo In IO.DriveInfo.GetDrives()
|
||||
If drive.DriveType = IO.DriveType.Network Then
|
||||
Dim driveInfo As New NetworkDriveInfo With {
|
||||
.DriveLetter = drive.Name,
|
||||
.NetworkPath = GetNetworkPath(drive.Name),
|
||||
.DriveType = drive.DriveType,
|
||||
.IsReady = drive.IsReady
|
||||
}
|
||||
|
||||
If drive.IsReady Then
|
||||
Try
|
||||
driveInfo.TotalSize = drive.TotalSize
|
||||
driveInfo.FreeSpace = drive.AvailableFreeSpace
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"Konnte Größeninformationen für {drive.Name} nicht ermitteln: {ex.Message}")
|
||||
End Try
|
||||
End If
|
||||
|
||||
mappedDrives.Add(driveInfo)
|
||||
End If
|
||||
Next
|
||||
|
||||
_Logger.Debug($"Insgesamt {mappedDrives.Count} Netzlaufwerk(e) gefunden")
|
||||
Return mappedDrives
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Ermitteln der Netzlaufwerke: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return mappedDrives
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt den UNC-Pfad eines gemappten Laufwerks
|
||||
''' </summary>
|
||||
Public Function GetNetworkPath(driveLetter As String) As String
|
||||
Try
|
||||
driveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not driveLetter.EndsWith(":") Then
|
||||
driveLetter &= ":"
|
||||
End If
|
||||
|
||||
Dim network As Object = CreateObject("WScript.Network")
|
||||
Dim enumDrives As Object = network.EnumNetworkDrives()
|
||||
|
||||
For i As Integer = 0 To enumDrives.Count - 1 Step 2
|
||||
If enumDrives.Item(i).ToString.Equals(driveLetter, StringComparison.OrdinalIgnoreCase) Then
|
||||
Return enumDrives.Item(i + 1).ToString()
|
||||
End If
|
||||
Next
|
||||
|
||||
Return String.Empty
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"Fehler beim Ermitteln des Netzwerkpfads für {driveLetter}: {ex.Message}")
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Prüft ob ein bestimmtes Laufwerk als Netzlaufwerk gemappt ist
|
||||
''' </summary>
|
||||
Public Shared Function IsDriveMapped(driveLetter As String) As Boolean
|
||||
Try
|
||||
driveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not driveLetter.EndsWith(":") Then
|
||||
driveLetter &= ":"
|
||||
End If
|
||||
If Not driveLetter.EndsWith("\") Then
|
||||
driveLetter &= "\"
|
||||
End If
|
||||
|
||||
Dim driveInfo As New IO.DriveInfo(driveLetter)
|
||||
Return driveInfo.DriveType = IO.DriveType.Network AndAlso driveInfo.IsReady
|
||||
|
||||
Catch ex As Exception
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Gibt eine formatierte Übersicht aller gemappten Netzlaufwerke zurück
|
||||
''' </summary>
|
||||
Public Function GetMappedDrivesInfo() As String
|
||||
Dim result As New System.Text.StringBuilder()
|
||||
Dim drives = GetMappedNetworkDrives()
|
||||
|
||||
If drives.Count = 0 Then
|
||||
Return "Keine Netzlaufwerke gefunden."
|
||||
End If
|
||||
|
||||
result.AppendLine($"Gemappte Netzlaufwerke ({drives.Count}):")
|
||||
result.AppendLine(New String("-"c, 60))
|
||||
|
||||
For Each drive In drives
|
||||
result.AppendLine($"Laufwerk: {drive.DriveLetter}")
|
||||
result.AppendLine($" Pfad: {drive.NetworkPath}")
|
||||
result.AppendLine($" Status: {If(drive.IsReady, "Verfügbar", "Nicht verfügbar")}")
|
||||
|
||||
If drive.IsReady AndAlso drive.TotalSize > 0 Then
|
||||
Dim totalGB As Double = drive.TotalSize / (1024.0 ^ 3)
|
||||
Dim freeGB As Double = drive.FreeSpace / (1024.0 ^ 3)
|
||||
result.AppendLine($" Größe: {totalGB:N2} GB (Frei: {freeGB:N2} GB)")
|
||||
End If
|
||||
|
||||
result.AppendLine()
|
||||
Next
|
||||
|
||||
Return result.ToString()
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Mappt ein spezifisches Laufwerk (z.B. "V") mit Blacklist-Prüfung
|
||||
''' </summary>
|
||||
Public Function MapSpecificDrive(driveLetter As String, blacklist As String, networkPath As String) As Boolean
|
||||
Try
|
||||
' Formatierung sicherstellen
|
||||
driveLetter = driveLetter.Trim().ToUpper().Replace(":", "")
|
||||
|
||||
If String.IsNullOrEmpty(driveLetter) OrElse driveLetter.Length <> 1 Then
|
||||
_Logger.Warn($"⚠️ Ungültiger Laufwerksbuchstabe: [{driveLetter}]")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim driveWithColon As String = driveLetter & ":"
|
||||
|
||||
' Prüfen ob Laufwerk verfügbar ist
|
||||
If Not IsDriveLetterAvailable(driveWithColon, blacklist) Then
|
||||
_Logger.Warn($"⚠️ Laufwerk {driveWithColon} ist nicht verfügbar (bereits verwendet oder in Blacklist)")
|
||||
Return False
|
||||
End If
|
||||
|
||||
' UNC-Pfad vorbereiten (ohne abschließenden Backslash)
|
||||
Dim uncPath As String = networkPath.TrimEnd("\"c)
|
||||
|
||||
' Laufwerk mappen (OHNE Credentials, persistent=False für temporäres Mapping)
|
||||
Dim result = MapNetworkDrive(driveWithColon, uncPath, blacklist, userName:=Nothing, password:=Nothing, persistent:=False)
|
||||
|
||||
If Not String.IsNullOrEmpty(result) Then
|
||||
_Logger.Debug($"✓ Laufwerk {driveWithColon} erfolgreich gemappt zu [{uncPath}]")
|
||||
Return True
|
||||
Else
|
||||
_Logger.Error($"❌ Fehler beim Mappen von {driveWithColon}")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler in MapSpecificDrive: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Mappt automatisch den nächsten freien Laufwerksbuchstaben (Z→A)
|
||||
''' </summary>
|
||||
Public Function MapDriveAutomatic(blacklist As String, networkPath As String) As String
|
||||
Try
|
||||
' UNC-Pfad vorbereiten (ohne abschließenden Backslash)
|
||||
Dim uncPath As String = networkPath.TrimEnd("\"c)
|
||||
|
||||
_Logger.Debug($"🔍 Suche automatisch freien Laufwerksbuchstaben...")
|
||||
_Logger.Debug($" Blacklist: [{blacklist}]")
|
||||
_Logger.Debug($" Netzwerkpfad: [{uncPath}]")
|
||||
|
||||
' Automatisches Mapping (leer = automatische Auswahl, persistent=False)
|
||||
Dim result = MapNetworkDrive("", uncPath, blacklist, userName:=Nothing, password:=Nothing, persistent:=False)
|
||||
|
||||
If Not String.IsNullOrEmpty(result) Then
|
||||
_Logger.Debug($"✓ Automatisch gewähltes Laufwerk: {result}")
|
||||
Return result
|
||||
Else
|
||||
_Logger.Error($"❌ Kein freier Laufwerksbuchstabe verfügbar")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler in MapDriveAutomatic: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
End Class
|
||||
@@ -2,7 +2,6 @@
|
||||
Imports System.Web
|
||||
|
||||
Public Module ModuleExtensions
|
||||
Public TEMP_DOCUMENT_FOLDER As String = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "Documents")
|
||||
Const UnixEraStartTicks As Long = 621355968000000000
|
||||
|
||||
' ======================================================
|
||||
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("basisfunktionalitäten für DigitalData Anwendungen")>
|
||||
<Assembly: AssemblyCompany("Digital Data GmbH")>
|
||||
<Assembly: AssemblyProduct("Modules.")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("1.3.9.0")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' indem Sie "*" wie unten gezeigt eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.0.0.0")>
|
||||
<Assembly: AssemblyVersion("1.3.9.0")>
|
||||
<Assembly: AssemblyFileVersion("1.3.9.0")>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="NuGet.CommandLine" version="6.13.2" targetFramework="net462" developmentDependency="true" />
|
||||
</packages>
|
||||
@@ -17,38 +17,6 @@
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -47,7 +47,16 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.8.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
@@ -62,102 +71,27 @@
|
||||
<Reference Include="FirebirdSql.Data.FirebirdClient, Version=7.5.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Configuration.Abstractions.8.0.0\lib\net462\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.10.0.0\lib\net462\Microsoft.Extensions.DependencyInjection.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.10.0.0\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Http.8.0.0\lib\net462\Microsoft.Extensions.Http.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Logging, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Logging.8.0.0\lib\net462\Microsoft.Extensions.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.8.0.0\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Options, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Options.8.0.0\lib\net462\Microsoft.Extensions.Options.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Primitives.8.0.0\lib\net462\Microsoft.Extensions.Primitives.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ReC.Client, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ReC.Client.2.0.0-beta\lib\net462\ReC.Client.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.Odbc, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Data.Odbc.6.0.1\lib\net461\System.Data.Odbc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.8.0.0\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.Json.8.0.0\lib\net462\System.Net.Http.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.8.0.0\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
@@ -214,16 +148,6 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Base\Base.vbproj">
|
||||
<Project>{6ea0c51f-c2b1-4462-8198-3de0b32b74f8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Database\Database.vbproj">
|
||||
<Project>{eaf0ea75-5fa7-485d-89c7-b2d843b03a96}</Project>
|
||||
<Name>Database</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
@@ -36,9 +36,8 @@ Public Class ConfigDbFunct
|
||||
Dim oDatabase As MSSQLServer = New MSSQLServer(pLogConfig, oDecryptedConnectionString)
|
||||
|
||||
Dim oSql As String = "SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = '" + pProductName + "' AND ACTIVE = 1 AND VERSION = '" + pVersion + "'"
|
||||
oLogger.Debug(String.Format("oSql in GetProductLicense: {0}", oSql))
|
||||
|
||||
Dim oLicenseString As String = oDatabase.GetScalarValue(oSql)
|
||||
|
||||
Return oLicenseString
|
||||
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -235,11 +235,13 @@ Public Class ConfigManager(Of T)
|
||||
Try
|
||||
Dim oAppConfig = ReadFromFile(_AppConfigPath)
|
||||
CopyValues(oAppConfig, Config)
|
||||
|
||||
_Logger.Info("AppConfig exists and will be used. [{0}]", _AppConfigPath)
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
_Logger.Warn("ApplicationConfig could not be loaded! Path: [{0}] Reason: {1}", _AppConfigPath, ex.Message)
|
||||
_Logger.Warn("ApplicationConfig could not be loaded!")
|
||||
End Try
|
||||
|
||||
_WriteAllValuesToUserConfig = False
|
||||
Else
|
||||
_Logger.Debug("ApplicationConfig does not exist.")
|
||||
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("Stellt Module für die Konfiguration von Produkten bereit")>
|
||||
<Assembly: AssemblyCompany("Digital Data GmbH, Heuchelheim")>
|
||||
<Assembly: AssemblyProduct("Modules.Config")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("1.5.0.0")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.5.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.5.0.0")>
|
||||
<Assembly: AssemblyVersion("1.3.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.3.0.0")>
|
||||
|
||||
2
Config/My Project/Settings.Designer.vb
generated
2
Config/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -3,31 +3,6 @@
|
||||
<package id="EntityFramework" version="6.4.4" targetFramework="net462" />
|
||||
<package id="EntityFramework.Firebird" version="6.4.0" targetFramework="net462" />
|
||||
<package id="FirebirdSql.Data.FirebirdClient" version="7.5.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Configuration.Abstractions" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.DependencyInjection" version="10.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="10.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Http" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Logging" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Logging.Abstractions" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Options" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Primitives" version="8.0.0" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="ReC.Client" version="2.0.0-beta" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
|
||||
<package id="System.Data.Odbc" version="6.0.1" targetFramework="net462" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net462" />
|
||||
<package id="System.Net.Http" version="4.3.4" targetFramework="net462" />
|
||||
<package id="System.Net.Http.Json" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -1,6 +1,5 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Threading
|
||||
Imports DigitalData.Modules.Encryption
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
@@ -255,7 +254,6 @@ Public Class MSSQLServer
|
||||
|
||||
Return pConnection
|
||||
Catch ex As Exception
|
||||
|
||||
Logger.Error("Error while opening Connection!")
|
||||
Logger.Error(ex)
|
||||
|
||||
@@ -315,19 +313,6 @@ Public Class MSSQLServer
|
||||
End Using
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(pSqlCommand As String, Optional pTimeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Using oSqlConnection = GetSQLConnection()
|
||||
Return GetDatatableWithConnectionObject(pSqlCommand, oSqlConnection, TransactionMode.NoTransaction, Nothing, pTimeout)
|
||||
End Using
|
||||
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(pSqlCommand As SqlCommand, Optional pTimeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Using oSqlConnection = GetSQLConnection()
|
||||
Return GetDatatableWithConnectionObject(pSqlCommand, oSqlConnection, TransactionMode.NoTransaction, Nothing, pTimeout)
|
||||
End Using
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Returns a datatable for a SQL Statement
|
||||
''' </summary>
|
||||
@@ -355,10 +340,6 @@ Public Class MSSQLServer
|
||||
Return Await Task.Run(Function() GetDatatable(pSqlCommandObject, pTimeout))
|
||||
End Function
|
||||
|
||||
Public Async Function GetDatatableWithoutTransactionAsync(pSqlCommand As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable)
|
||||
Return Await Task.Run(Function() GetDatatableWithoutTransaction(pSqlCommand, pTimeout))
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithConnection(pSqlCommand As String, pConnectionString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
Using oConnection = GetConnection(pConnectionString)
|
||||
Return GetDatatableWithConnectionObject(pSqlCommand, oConnection, pTimeout:=Timeout)
|
||||
@@ -489,35 +470,20 @@ Public Class MSSQLServer
|
||||
Dim oTransaction As SqlTransaction = MaybeGetTransaction(pSqlConnection, pTransactionMode, pTransaction)
|
||||
|
||||
Try
|
||||
|
||||
Logger.Debug("ExecuteNonQueryWithConnectionObject: Running Command [{0}] and Parameters [{1}]", pSqlCommandObject.CommandText, GetParameterListAsString(pSqlCommandObject))
|
||||
|
||||
pSqlCommandObject.Connection = pSqlConnection
|
||||
pSqlCommandObject.Transaction = oTransaction
|
||||
pSqlCommandObject.CommandTimeout = pTimeout
|
||||
|
||||
' Sicherstellen, dass Nothing-Werte als DBNull übergeben werden
|
||||
For Each oParam As SqlParameter In pSqlCommandObject.Parameters
|
||||
If oParam.Value Is Nothing Then
|
||||
Logger.Warn("ExecuteNonQueryWithConnectionObject: Parameter [{0}] was Nothing - converting to DBNull.Value", oParam.ParameterName)
|
||||
oParam.Value = DBNull.Value
|
||||
End If
|
||||
Next
|
||||
|
||||
pSqlCommandObject.ExecuteNonQuery()
|
||||
|
||||
Return True
|
||||
Catch ex As SqlException
|
||||
Logger.Warn("ExecuteNonQueryWithConnectionObject: SQL Error while executing command: [{0}]", pSqlCommandObject.CommandText)
|
||||
Logger.Warn("Parameters: [{0}]", GetParameterListAsString(pSqlCommandObject))
|
||||
For Each sqlError As SqlError In ex.Errors
|
||||
Logger.Error("SQL Error #{0} (Severity {1}, State {2}, Line {3}): {4}",
|
||||
sqlError.Number, sqlError.Class, sqlError.State, sqlError.LineNumber, sqlError.Message)
|
||||
Next
|
||||
Return False
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Unexpected Error in ExecuteNonQueryWithConnectionObject while executing command: [{0}]", pSqlCommandObject.CommandText)
|
||||
Logger.Warn("Parameters: [{0}]", GetParameterListAsString(pSqlCommandObject))
|
||||
Dim omsg = $"Unexpected Error in ExecuteNonQueryWithConnectionObject while executing command: [{pSqlCommandObject.CommandText}]"
|
||||
Logger.Warn(omsg)
|
||||
Logger.Error(ex)
|
||||
|
||||
Return False
|
||||
Finally
|
||||
MaybeCommitTransaction(oTransaction, pTransactionMode)
|
||||
@@ -686,13 +652,10 @@ Public Class MSSQLServer
|
||||
Cast(Of SqlParameter).
|
||||
Select(Function(p) $"({p.ParameterName}={p.Value})").
|
||||
ToList()
|
||||
|
||||
Dim oParamString = String.Join(",", oList)
|
||||
If oParamString.Length > 1000 Then
|
||||
oParamString = oParamString.Substring(1, 1000)
|
||||
End If
|
||||
Return oParamString
|
||||
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
@@ -151,7 +151,7 @@ Public Class Oracle
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function GetDatatable(SqlCommand As System.Data.SqlClient.SqlCommand, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatable
|
||||
Public Function GetDatatable(SqlCommand As SqlClient.SqlCommand, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatable
|
||||
Throw New NotImplementedException()
|
||||
End Function
|
||||
|
||||
@@ -251,11 +251,5 @@ Public Class Oracle
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(SqlCommand As String, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Throw New NotImplementedException()
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(SqlCommand As SqlClient.SqlCommand, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Throw New NotImplementedException()
|
||||
End Function
|
||||
End Class
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<entityFramework>
|
||||
<defaultConnectionFactory type="EntityFramework.Firebird.FbConnectionFactory, EntityFramework.Firebird" />
|
||||
@@ -12,29 +11,13 @@
|
||||
<provider invariantName="FirebirdSql.Data.FirebirdClient" type="EntityFramework.Firebird.FbProviderServices, EntityFramework.Firebird" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
|
||||
</startup>
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<remove invariant="Oracle.ManagedDataAccess.Client" />
|
||||
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
|
||||
</DbProviderFactories>
|
||||
</system.data>
|
||||
</configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
|
||||
|
||||
@@ -47,8 +47,10 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Encryption">
|
||||
<HintPath>..\Encryption\bin\Debug\DigitalData.Modules.Encryption.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
@@ -63,55 +65,24 @@
|
||||
<Reference Include="FirebirdSql.Data.FirebirdClient, Version=7.5.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Oracle.ManagedDataAccess.21.15.0\lib\net462\Oracle.ManagedDataAccess.dll</HintPath>
|
||||
<Reference Include="Oracle.ManagedDataAccess">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\Oracle.ManagedDataAccess.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.Odbc, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Data.Odbc.6.0.1\lib\net461\System.Data.Odbc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Formats.Asn1, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Asn1.8.0.0\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.6.0.0\lib\net461\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.6.0.1\lib\net461\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@@ -178,20 +149,8 @@
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Oracle.DataAccess.Common.Configuration.Section.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="Oracle.ManagedDataAccess.Client.Configuration.Section.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Encryption\Encryption.vbproj">
|
||||
<Project>{8a8f20fc-c46e-41ac-bee7-218366cfff99}</Project>
|
||||
<Name>Encryption</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
@@ -199,11 +158,9 @@
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets" Condition="Exists('..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets')" />
|
||||
</Project>
|
||||
@@ -11,9 +11,6 @@ Public Interface IDatabase
|
||||
Function GetDatatable(SqlCommand As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
Function GetDatatable(SqlCommand As SqlCommand, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
|
||||
Function GetDatatableWithoutTransaction(SqlCommand As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
Function GetDatatableWithoutTransaction(SqlCommand As SqlCommand, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
|
||||
Function ExecuteNonQuery(SQLCommand As String, Timeout As Integer) As Boolean
|
||||
Function ExecuteNonQuery(SQLCommand As String) As Boolean
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyCompany("Digital Data")>
|
||||
<Assembly: AssemblyProduct("Modules.Database")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("2.4.0.0")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.4.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.4.0.0")>
|
||||
<Assembly: AssemblyVersion("2.3.6.0")>
|
||||
<Assembly: AssemblyFileVersion("2.3.6.0")>
|
||||
|
||||
2
Database/My Project/Settings.Designer.vb
generated
2
Database/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
<xs:simpleType name="parameterDirection">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Output"/>
|
||||
<xs:enumeration value="InputOutput"/>
|
||||
<xs:enumeration value="ReturnValue"/>
|
||||
<xs:enumeration value="Implicit"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="customBoolean">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="true"/>
|
||||
<xs:enumeration value="false"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ONSParameters">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="nodeList"/>
|
||||
<!--<xs:enumeration value="walletFile"/>
|
||||
<xs:enumeration value="walletPassword"/>-->
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ONSModeValues">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="local"/>
|
||||
<xs:enumeration value="remote"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="datatype">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="System.Binary"/>
|
||||
<xs:enumeration value="System.Boolean"/>
|
||||
<xs:enumeration value="System.Byte"/>
|
||||
<xs:enumeration value="System.Byte[]"/>
|
||||
<xs:enumeration value="System.Char"/>
|
||||
<xs:enumeration value="System.DateTime"/>
|
||||
<xs:enumeration value="System.DateTimeOffset"/>
|
||||
<xs:enumeration value="System.Decimal"/>
|
||||
<xs:enumeration value="System.Double"/>
|
||||
<xs:enumeration value="System.Guid"/>
|
||||
<xs:enumeration value="System.Int16"/>
|
||||
<xs:enumeration value="System.Int32"/>
|
||||
<xs:enumeration value="System.Int64"/>
|
||||
<xs:enumeration value="System.SByte"/>
|
||||
<xs:enumeration value="System.Single"/>
|
||||
<xs:enumeration value="System.String"/>
|
||||
<xs:enumeration value="System.TimeSpan"/>
|
||||
<xs:enumeration value="System.UInt16"/>
|
||||
<xs:enumeration value="System.UInt32"/>
|
||||
<xs:enumeration value="System.UInt64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="providerType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="BFile"/>
|
||||
<xs:enumeration value="BinaryFloat"/>
|
||||
<xs:enumeration value="BinaryDouble"/>
|
||||
<xs:enumeration value="Blob"/>
|
||||
<xs:enumeration value="Byte"/>
|
||||
<xs:enumeration value="Char"/>
|
||||
<xs:enumeration value="Clob"/>
|
||||
<xs:enumeration value="Date"/>
|
||||
<xs:enumeration value="Decimal"/>
|
||||
<xs:enumeration value="Double"/>
|
||||
<xs:enumeration value="Int16"/>
|
||||
<xs:enumeration value="Int32"/>
|
||||
<xs:enumeration value="Int64"/>
|
||||
<xs:enumeration value="IntervalDS"/>
|
||||
<xs:enumeration value="IntervalYM"/>
|
||||
<xs:enumeration value="Long"/>
|
||||
<xs:enumeration value="LongRaw"/>
|
||||
<xs:enumeration value="NChar"/>
|
||||
<xs:enumeration value="NClob"/>
|
||||
<xs:enumeration value="NVarchar2"/>
|
||||
<xs:enumeration value="Object"/>
|
||||
<xs:enumeration value="Raw"/>
|
||||
<xs:enumeration value="Single"/>
|
||||
<xs:enumeration value="TimeStamp"/>
|
||||
<xs:enumeration value="TimeStampLTZ"/>
|
||||
<xs:enumeration value="TimeStampTZ"/>
|
||||
<xs:enumeration value="Varchar2"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="nativeDataType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="BFile"/>
|
||||
<xs:enumeration value="Binary_Float"/>
|
||||
<xs:enumeration value="Binary_Double"/>
|
||||
<xs:enumeration value="Blob"/>
|
||||
<xs:enumeration value="Char"/>
|
||||
<xs:enumeration value="Clob"/>
|
||||
<xs:enumeration value="Date"/>
|
||||
<xs:enumeration value="Number"/>
|
||||
<xs:enumeration value="Interval Day To Second"/>
|
||||
<xs:enumeration value="Interval Year To Month"/>
|
||||
<xs:enumeration value="Long"/>
|
||||
<xs:enumeration value="Long Raw"/>
|
||||
<xs:enumeration value="NChar"/>
|
||||
<xs:enumeration value="NClob"/>
|
||||
<xs:enumeration value="NVarchar2"/>
|
||||
<xs:enumeration value="Raw"/>
|
||||
<xs:enumeration value="Rowid"/>
|
||||
<xs:enumeration value="Timestamp"/>
|
||||
<xs:enumeration value="Timestamp With Local Time Zone"/>
|
||||
<xs:enumeration value="Timestamp With Time Zone"/>
|
||||
<xs:enumeration value="URowid"/>
|
||||
<xs:enumeration value="UserDefinedType"/>
|
||||
<xs:enumeration value="Varchar2"/>
|
||||
<xs:enumeration value="XmlType"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="providerDBType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AnsiString"/>
|
||||
<xs:enumeration value="AnsiStringFixedLength"/>
|
||||
<xs:enumeration value="Binary"/>
|
||||
<xs:enumeration value="Byte"/>
|
||||
<xs:enumeration value="Date"/>
|
||||
<xs:enumeration value="DateTime"/>
|
||||
<xs:enumeration value="DateTimeOffset"/>
|
||||
<xs:enumeration value="Decimal"/>
|
||||
<xs:enumeration value="Double"/>
|
||||
<xs:enumeration value="Int16"/>
|
||||
<xs:enumeration value="Int32"/>
|
||||
<xs:enumeration value="Int64"/>
|
||||
<xs:enumeration value="Object"/>
|
||||
<xs:enumeration value="Single"/>
|
||||
<xs:enumeration value="String"/>
|
||||
<xs:enumeration value="StringFixedLength"/>
|
||||
<xs:enumeration value="Time"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -1,221 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
<xs:include schemaLocation="Oracle.DataAccess.Common.Configuration.Section.xsd"/>
|
||||
<xs:element name="oracle.manageddataaccess.client" >
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:element name="version" type="odpmversiontype" minOccurs="0" />
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="odpmversiontype">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="odpmparameters">
|
||||
<xs:attribute name="number" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="odpmparameters">
|
||||
<xs:all>
|
||||
<xs:element minOccurs="0" name="settings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="setting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="udtMappings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="udtMapping">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="typeName" type="xs:string" use="required" />
|
||||
<xs:attribute name="factoryName" type="xs:string" use="required" />
|
||||
<xs:attribute name="dataSource" type="xs:string" use="required" />
|
||||
<xs:attribute name="schemaName" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="LDAPsettings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="LDAPsetting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="distributedTransaction">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="setting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="dataSources">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="dataSource">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="alias" type="xs:string" use="required" />
|
||||
<xs:attribute name="descriptor" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element minOccurs="0" name="connectionPools">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="connectionPool">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="connectionString" type="xs:string" use="required" />
|
||||
<xs:attribute name="poolName" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element minOccurs="0" name="edmMappings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="edmMapping">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="add">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="precision" type="xs:int" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="dataType" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="edmNumberMapping">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="add">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="NETType" type="xs:string" use="required" />
|
||||
<xs:attribute name="MinPrecision" type="xs:int" use="required" />
|
||||
<xs:attribute name="MaxPrecision" type="xs:int" use="required" />
|
||||
<xs:attribute name="DBType" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="implicitRefCursor">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="storedProcedure">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="refCursor">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="1" name="bindInfo">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="mode" type="parameterDirection" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="metadata">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="columnOrdinal" type="xs:int" use="required" />
|
||||
<xs:attribute name="columnName" type="xs:string" use="required" />
|
||||
<xs:attribute name="baseColumnName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="baseSchemaName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="baseTableName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="providerType" type="providerType" use="optional" />
|
||||
<xs:attribute name="columnSize" type="xs:int" use="optional" />
|
||||
<xs:attribute name="numericPrecision" type="xs:int" use="optional" />
|
||||
<xs:attribute name="numericScale" type="xs:int" use="optional" />
|
||||
<xs:attribute name="isUnique" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isKey" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isRowID" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="dataType" type="datatype" use="optional" />
|
||||
<xs:attribute name="allowDBNull" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isAliased" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isByteSemantic" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isExpression" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isHidden" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isReadOnly" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isLong" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="udtTypeName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="nativeDataType" type="nativeDataType" use="optional" />
|
||||
<xs:attribute name="providerDBType" type="providerDBType" use="optional" />
|
||||
<xs:attribute name="objectName" type="xs:string" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string" use="optional" />
|
||||
<xs:attribute name="position" type="xs:int" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="schema" type="xs:string" use="optional" />
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="onsConfig">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="settings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="2" minOccurs="0" name="setting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="ons">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="3" minOccurs="1" name="add">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="ONSParameters" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="database" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="configFile" type="xs:string" use="optional" />
|
||||
<xs:attribute name="mode" type="ONSModeValues" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -1,19 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Encryption" version="1.3.1" targetFramework="net462" />
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net462" />
|
||||
<package id="EntityFramework" version="6.4.4" targetFramework="net461" />
|
||||
<package id="EntityFramework.Firebird" version="6.4.0" targetFramework="net461" />
|
||||
<package id="FirebirdSql.Data.FirebirdClient" version="7.5.0" targetFramework="net461" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="Oracle.ManagedDataAccess" version="21.15.0" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
|
||||
<package id="System.Data.Odbc" version="6.0.1" targetFramework="net461" />
|
||||
<package id="System.Formats.Asn1" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="6.0.1" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
</packages>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
||||
Imports System.ServiceModel
|
||||
Imports System.Threading
|
||||
Imports System.Xml
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
|
||||
@@ -11,65 +10,31 @@ Public Class Channel
|
||||
Private ReadOnly ChannelFactory As ChannelFactory(Of IEDMIServiceChannel)
|
||||
|
||||
Public Event Reconnect As EventHandler
|
||||
' Verbindungszähler
|
||||
Private Shared _ActiveConnections As Integer = 0
|
||||
Public Shared ReadOnly Property ActiveConnections As Integer
|
||||
Get
|
||||
Return _ActiveConnections
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Shared Function GetBinding(Optional AuthenticationMode As TcpClientCredentialType = TcpClientCredentialType.Windows) As NetTcpBinding
|
||||
Return New NetTcpBinding() With {
|
||||
.MaxReceivedMessageSize = Constants.ChannelSettings.MAX_RECEIVED_MESSAGE_SIZE,
|
||||
.MaxBufferSize = Constants.ChannelSettings.MAX_BUFFER_SIZE,
|
||||
.MaxBufferPoolSize = Constants.ChannelSettings.MAX_BUFFER_POOL_SIZE,
|
||||
.ListenBacklog = Constants.ChannelSettings.MAX_CONNECTIONS,
|
||||
.MaxConnections = Constants.ChannelSettings.MAX_CONNECTIONS,
|
||||
.TransferMode = TransferMode.Streamed,
|
||||
.SendTimeout = TimeSpan.FromSeconds(30), ' ← War: 5min → Schnellere Fehlererkennung
|
||||
.ReceiveTimeout = TimeSpan.FromMinutes(10), ' Keepalive < Firewall-Timeout (3600s) ✓
|
||||
.OpenTimeout = TimeSpan.FromSeconds(30), ' ← Neu: Verbindungsaufbau begrenzen
|
||||
.CloseTimeout = TimeSpan.FromSeconds(30),
|
||||
.Security = New NetTcpSecurity() With {
|
||||
.Mode = SecurityMode.Transport,
|
||||
.Transport = New TcpTransportSecurity() With {
|
||||
.ClientCredentialType = AuthenticationMode
|
||||
.MaxReceivedMessageSize = Constants.ChannelSettings.MAX_RECEIVED_MESSAGE_SIZE,
|
||||
.MaxBufferSize = Constants.ChannelSettings.MAX_BUFFER_SIZE,
|
||||
.MaxBufferPoolSize = Constants.ChannelSettings.MAX_BUFFER_POOL_SIZE,
|
||||
.TransferMode = TransferMode.Streamed,
|
||||
.Security = New NetTcpSecurity() With {
|
||||
.Mode = SecurityMode.Transport,
|
||||
.Transport = New TcpTransportSecurity() With {
|
||||
.ClientCredentialType = AuthenticationMode
|
||||
}
|
||||
},
|
||||
.ReaderQuotas = New XmlDictionaryReaderQuotas() With {
|
||||
.MaxArrayLength = Constants.ChannelSettings.MAX_ARRAY_LENGTH,
|
||||
.MaxStringContentLength = Constants.ChannelSettings.MAX_STRING_CONTENT_LENGTH
|
||||
}
|
||||
},
|
||||
.ReaderQuotas = New XmlDictionaryReaderQuotas() With {
|
||||
.MaxArrayLength = Constants.ChannelSettings.MAX_ARRAY_LENGTH,
|
||||
.MaxStringContentLength = Constants.ChannelSettings.MAX_STRING_CONTENT_LENGTH
|
||||
}
|
||||
}
|
||||
End Function
|
||||
|
||||
Public Sub New(pLogConfig As LogConfig, pServerAddress As ServerAddressStruct)
|
||||
MyBase.New(pLogConfig)
|
||||
ChannelFactory = GetChannelFactory(pServerAddress)
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Closes a channel gracefully, falls back to Abort on error
|
||||
''' </summary>
|
||||
Public Shared Sub CloseChannel(pChannel As IEDMIServiceChannel)
|
||||
If pChannel Is Nothing Then Return
|
||||
|
||||
Try
|
||||
If pChannel.State = CommunicationState.Opened Then
|
||||
pChannel.Close()
|
||||
ElseIf pChannel.State = CommunicationState.Faulted OrElse
|
||||
pChannel.State = CommunicationState.Closing Then
|
||||
pChannel.Abort()
|
||||
End If
|
||||
' CommunicationState.Created / Closed → nichts tun, Zähler nicht betroffen
|
||||
Catch ex As Exception
|
||||
Try
|
||||
pChannel.Abort()
|
||||
Catch
|
||||
' Ignore
|
||||
End Try
|
||||
End Try
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a channel and adds a Faulted-Handler
|
||||
''' </summary>
|
||||
@@ -79,45 +44,21 @@ Public Class Channel
|
||||
Logger.Debug("Creating channel.")
|
||||
Dim oChannel = ChannelFactory.CreateChannel()
|
||||
|
||||
' Verbindung zählen beim Öffnen
|
||||
AddHandler oChannel.Opened, Sub()
|
||||
Dim oCount = Interlocked.Increment(_ActiveConnections)
|
||||
Logger.Debug("Channel opened. Active connections: [{0}]", oCount)
|
||||
End Sub
|
||||
AddHandler oChannel.Faulted, Sub() RaiseEvent Reconnect(Me, Nothing)
|
||||
|
||||
' Verbindung abziehen beim Schließen oder Fehler
|
||||
AddHandler oChannel.Closed, Sub()
|
||||
Dim oCount = Interlocked.Decrement(_ActiveConnections)
|
||||
Logger.Debug("Channel closed. Active connections: [{0}]", oCount)
|
||||
End Sub
|
||||
|
||||
AddHandler oChannel.Faulted, Sub()
|
||||
Dim oCount = Interlocked.Decrement(_ActiveConnections)
|
||||
Logger.Warn("Channel faulted. Active connections: [{0}]", oCount)
|
||||
RaiseEvent Reconnect(Me, Nothing)
|
||||
End Sub
|
||||
|
||||
Logger.Debug("Channel created. State=[{0}]", oChannel.State)
|
||||
Return oChannel
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Throw
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetChannelFactory(pServerAddress As ServerAddressStruct) As ChannelFactory(Of IEDMIServiceChannel)
|
||||
Dim oBinding = GetBinding()
|
||||
Dim oAddress = New EndpointAddress($"net.tcp://{pServerAddress.Host}:{pServerAddress.Port}/DigitalData/Services/Main")
|
||||
Logger.Debug("Creating ChannelFactory with Binding: SendTimeout=[{0}], ReceiveTimeout=[{1}], MaxConnections=[{2}], MaxBufferSize=[{3}], TransferMode=[{4}]",
|
||||
oBinding.SendTimeout,
|
||||
oBinding.ReceiveTimeout,
|
||||
oBinding.MaxConnections,
|
||||
oBinding.MaxBufferSize,
|
||||
oBinding.TransferMode)
|
||||
Dim oFactory = New ChannelFactory(Of IEDMIServiceChannel)(oBinding, oAddress)
|
||||
Return oFactory
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.EDMI.API
|
||||
Imports DigitalData.Modules.EDMI.API.Constants
|
||||
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
|
||||
@@ -79,7 +78,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function GetDatatableECMAsync(pSQL As String) As Task(Of DataTable)
|
||||
Return Await GetDatatableFromServiceAsync(pSQL, Constants.DatabaseType.ECM, 0)
|
||||
Return Await Task.Run(Function() GetDatatableECM(pSQL))
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableIDB(pSQL As String) As DataTable
|
||||
@@ -87,7 +86,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function GetDatatableIDBAsync(pSQL As String) As Task(Of DataTable)
|
||||
Return Await GetDatatableFromServiceAsync(pSQL, Constants.DatabaseType.IDB, 0)
|
||||
Return Await Task.Run(Function() GetDatatableIDB(pSQL))
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithConnection(pSQL As String, pConnectionId As Integer) As DataTable
|
||||
@@ -95,7 +94,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function GetDatatableWithConnectionAsync(pSQL As String, pConnectionId As Integer) As Task(Of DataTable)
|
||||
Return Await GetDatatableFromServiceAsync(pSQL, Constants.DatabaseType.None, pConnectionId)
|
||||
Return Await Task.Run(Function() GetDatatableWithConnection(pSQL, pConnectionId))
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
@@ -105,7 +104,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function GetScalarValueECMAsync(pSQL As String) As Task(Of Object)
|
||||
Return Await GetScalarValueFromServiceAsync(pSQL, Constants.DatabaseType.ECM, 0)
|
||||
Return Await Task.Run(Function() GetScalarValueECM(pSQL))
|
||||
End Function
|
||||
|
||||
Public Function GetScalarValueIDB(pSQL As String) As Object
|
||||
@@ -113,7 +112,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function GetScalarValueIDBAsync(pSQL As String) As Task(Of Object)
|
||||
Return Await GetScalarValueFromServiceAsync(pSQL, Constants.DatabaseType.IDB, 0)
|
||||
Return Await Task.Run(Function() GetScalarValueIDB(pSQL))
|
||||
End Function
|
||||
|
||||
Public Function GetScalarValueWithConnection(pSQL As String, pConnectionId As Integer) As Object
|
||||
@@ -121,7 +120,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function GetScalarValueWithConnectionAsync(pSQL As String, pConnectionId As Integer) As Task(Of Object)
|
||||
Return Await GetScalarValueFromServiceAsync(pSQL, Constants.DatabaseType.None, pConnectionId)
|
||||
Return Await Task.Run(Function() GetScalarValueWithConnection(pSQL, pConnectionId))
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
@@ -131,7 +130,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function ExecuteNonQueryECMAsync(pSQL As String) As Task(Of Boolean)
|
||||
Return Await ExecuteNonQueryFromServiceAsync(pSQL, Constants.DatabaseType.ECM, 0)
|
||||
Return Await Task.Run(Function() ExecuteNonQueryECM(pSQL))
|
||||
End Function
|
||||
|
||||
Public Function ExecuteNonQueryIDB(pSQL As String) As Boolean
|
||||
@@ -139,7 +138,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function ExecuteNonQueryIDBAsync(pSQL As String) As Task(Of Boolean)
|
||||
Return Await ExecuteNonQueryFromServiceAsync(pSQL, Constants.DatabaseType.IDB, 0)
|
||||
Return Await Task.Run(Function() ExecuteNonQueryIDB(pSQL))
|
||||
End Function
|
||||
|
||||
Public Function ExecuteNonQueryWithConnection(pSQL As String, pConnectionId As Integer) As Boolean
|
||||
@@ -147,7 +146,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Public Async Function ExecuteNonQueryWithConnectionAsync(pSQL As String, pConnectionId As Integer) As Task(Of Boolean)
|
||||
Return Await ExecuteNonQueryFromServiceAsync(pSQL, Constants.DatabaseType.None, pConnectionId)
|
||||
Return Await Task.Run(Function() ExecuteNonQueryWithConnection(pSQL, pConnectionId))
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
@@ -188,34 +187,33 @@ Public Class DatabaseWithFallback
|
||||
Try
|
||||
Dim oResult As DataTable = Nothing
|
||||
Dim oTableResult As TableResult = Nothing
|
||||
_Logger.Debug("GetDatatable: Fetching datatable [{0}] , Filter Expression [{1}], Sort By Column [{2}], Force Fallback [{3}]",
|
||||
pDataTableName, pFilterExpression, pSortByColumn, pForceFallback)
|
||||
|
||||
' If there is no client, we assume there is no service (configured)
|
||||
If _Client Is Nothing Then
|
||||
_Logger.Debug("GetDatatable: Client is empty, falling back to direct database access.")
|
||||
_Logger.Debug("Client is empty, falling back to direct database access.")
|
||||
Return GetDatatableFromDatabase(pFallbackSQL, pFallbackType, pConnectionId)
|
||||
End If
|
||||
|
||||
' If ForceFallback flag is set, we go to database immediately
|
||||
If pForceFallback Or _ClientConfig.ForceDirectDatabaseAccess Then
|
||||
_Logger.Debug("GetDatatable: ForceFallback is True, falling back to direct database access.")
|
||||
_Logger.Debug("ForceFallback is True, falling back to direct database access.")
|
||||
Return GetDatatableFromDatabase(pFallbackSQL, pFallbackType, pConnectionId)
|
||||
End If
|
||||
|
||||
' If the table is not cached, we try going through the service
|
||||
If Not IsTableCached(pDataTableName) Then
|
||||
_Logger.Debug("GetDatatable: Datatable [{0}] is not chached, fetching data from service.", pDataTableName)
|
||||
_Logger.Debug("Datatable is not chached, fetching data from service.")
|
||||
Return GetDatatableFromService(pFallbackSQL, pFallbackType, pConnectionId)
|
||||
End If
|
||||
|
||||
' If there is a proper ConnectionId, we try going through the service
|
||||
If pConnectionId > 0 Then
|
||||
_Logger.Debug("GetDatatable: ConnectionId is set, fetching data from service.")
|
||||
_Logger.Debug("ConnectionId is set, fetching data from service.")
|
||||
Return GetDatatableFromService(pFallbackSQL, pFallbackType, pConnectionId)
|
||||
End If
|
||||
|
||||
Try
|
||||
_Logger.Debug("GetDatatable: Datatable is chached, fetching data from cache.")
|
||||
_Logger.Debug("Datatable is chached, fetching data from cache.")
|
||||
oTableResult = _Client.GetDatatableByName(pDataTableName, pFilterExpression, pSortByColumn)
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
@@ -223,10 +221,9 @@ Public Class DatabaseWithFallback
|
||||
End Try
|
||||
|
||||
If oTableResult Is Nothing OrElse oTableResult.OK = False Then
|
||||
_Logger.Warn("⚠ GetDatatable: Datatable [{0}] could not be fetched from AppServer Cache. Falling back to direct Database Access.", pDataTableName)
|
||||
_Logger.Warn("Datatable [{0}] could not be fetched from AppServer Cache. Falling back to direct Database Access.", pDataTableName)
|
||||
Return GetDatatableFromDatabase(pFallbackSQL, pFallbackType, pConnectionId)
|
||||
Else
|
||||
_Logger.Debug("✔ GetDatatable: Datatable [{0}] fetched from AppServer Cache.", pDataTableName)
|
||||
Return oTableResult.Table
|
||||
End If
|
||||
|
||||
@@ -279,13 +276,11 @@ Public Class DatabaseWithFallback
|
||||
|
||||
' If there is no client, we assume there is no service (configured)
|
||||
If _Client Is Nothing Then
|
||||
_Logger.Debug("ExecuteNonQuery - Client is empty, falling back to direct database access.")
|
||||
Return ExecuteNonQueryFromDatabase(pSQL, pDatabaseType, pConnectionId)
|
||||
End If
|
||||
|
||||
' If ForceFallback flag is set, we go to database immediately
|
||||
If pForceFallback Or _ClientConfig.ForceDirectDatabaseAccess Then
|
||||
_Logger.Debug("ExecuteNonQuery - ForceFallback is set, falling back to direct database access.")
|
||||
Return ExecuteNonQueryFromDatabase(pSQL, pDatabaseType, pConnectionId)
|
||||
End If
|
||||
|
||||
@@ -299,9 +294,7 @@ Public Class DatabaseWithFallback
|
||||
End Function
|
||||
|
||||
Private Function IsTableCached(pName As String) As Boolean
|
||||
_Logger.Debug("IsTableCached: Checking if table [{0}] is cached.", pName)
|
||||
If _Client Is Nothing Then
|
||||
_Logger.Warn("⚠ IsTableCached: Client is nothing, cannot check if table is cached.")
|
||||
Return False
|
||||
End If
|
||||
|
||||
@@ -310,74 +303,42 @@ Public Class DatabaseWithFallback
|
||||
|
||||
Private Function GetDatatableFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As DataTable
|
||||
Try
|
||||
_Logger.Debug("GetDatatableFromService: Fetching data from service [{0}] with Connection Id [{1}] and Command [{2}]", DatabaseType.ToString, pConnectionId, pSQLCommand)
|
||||
Dim oResult As GetDatatableResponse = Nothing
|
||||
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.ECM
|
||||
oResult = _Client.GetDatatableFromECM(pSQLCommand)
|
||||
|
||||
Case Constants.DatabaseType.IDB
|
||||
oResult = _Client.GetDatatableFromIDB(pSQLCommand)
|
||||
|
||||
Case Else
|
||||
Return GetDatatableFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
End Select
|
||||
|
||||
If oResult Is Nothing OrElse oResult.OK = False Then
|
||||
_Logger.Warn("⚠ GetDatatableFromService: Service returned invalid response [{0}]. Falling back to direct database access.", If(oResult Is Nothing, "null", oResult.ErrorMessage))
|
||||
Return GetDatatableFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
If oResult Is Nothing Then
|
||||
Throw New ApplicationException("Unexpected server error ocurred!")
|
||||
End If
|
||||
|
||||
If oResult.OK = False Then
|
||||
Throw New ApplicationException(oResult.ErrorMessage)
|
||||
End If
|
||||
|
||||
Return oResult.Table
|
||||
|
||||
Catch ex As InvalidOperationException
|
||||
_Logger.Warn("⚠ GetDatatableFromService skipped: [{0}] Falling back to direct database access.", ex.Message)
|
||||
Return GetDatatableFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("⚠ GetDatatableFromService failed. Falling back to direct database access.")
|
||||
_Logger.Warn("GetDatatableFromService failed. Falling back to direct database access.")
|
||||
_Logger.Error(ex)
|
||||
Return GetDatatableFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Async Function GetDatatableFromServiceAsync(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Task(Of DataTable)
|
||||
Dim oFallback As Boolean = False
|
||||
_Logger.Debug("GetDatatableFromServiceAsync: GetDatatableFromServiceAsync called with SQL [{0}], DatabaseType [{1}], ConnectionId [{2}]", pSQLCommand, DatabaseType.ToString, pConnectionId)
|
||||
If _Client Is Nothing OrElse _ClientConfig?.ForceDirectDatabaseAccess Then
|
||||
Return Await Task.Run(Function() GetDatatableFromDatabase(pSQLCommand, DatabaseType, pConnectionId))
|
||||
End If
|
||||
|
||||
Dim oResult As GetDatatableResponse = Nothing
|
||||
Try
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.ECM
|
||||
oResult = Await _Client.GetDatatableFromECMAsync(pSQLCommand)
|
||||
Case Constants.DatabaseType.IDB
|
||||
oResult = Await _Client.GetDatatableFromIDBAsync(pSQLCommand)
|
||||
Case Else
|
||||
oResult = Await _Client.GetDatatableFromConnectionAsync(pSQLCommand, pConnectionId)
|
||||
End Select
|
||||
|
||||
If oResult Is Nothing OrElse oResult.OK = False Then
|
||||
_Logger.Warn("⚠ GetDatatableFromServiceAsync failed. Falling back to direct database access.")
|
||||
oFallback = True
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("⚠ GetDatatableFromServiceAsync failed. Falling back to direct database access.")
|
||||
_Logger.Error(ex)
|
||||
oFallback = True
|
||||
End Try
|
||||
|
||||
If oFallback Then
|
||||
Return Await Task.Run(Function() GetDatatableFromDatabase(pSQLCommand, DatabaseType, pConnectionId))
|
||||
End If
|
||||
|
||||
Return oResult.Table
|
||||
End Function
|
||||
Private Function GetDatatableFromDatabase(pSQLCommand As String, pDatabaseType As Constants.DatabaseType, pConnectionId As Integer) As DataTable
|
||||
Try
|
||||
_Logger.Debug("GetDatatableFromDatabase: Fetching data from database [{0}] with Connection Id [{1}] and Command [{2}]", pDatabaseType.ToString, pConnectionId, pSQLCommand)
|
||||
_Logger.Debug("Fetching data from database [{0}] with Connection Id [{0}]", pDatabaseType.ToString, pConnectionId)
|
||||
|
||||
Select Case pDatabaseType
|
||||
Case Constants.DatabaseType.IDB
|
||||
@@ -400,68 +361,35 @@ Public Class DatabaseWithFallback
|
||||
|
||||
End Try
|
||||
End Function
|
||||
Private Async Function GetScalarValueFromServiceAsync(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Task(Of Object)
|
||||
Dim oFallback As Boolean = False
|
||||
|
||||
_Logger.Debug("GetScalarValueFromServiceAsync called with SQL [{0}], DatabaseType [{1}], ConnectionId [{2}]", pSQLCommand, DatabaseType.ToString, pConnectionId)
|
||||
|
||||
If _Client Is Nothing OrElse _ClientConfig?.ForceDirectDatabaseAccess Then
|
||||
Return Await Task.Run(Function() GetScalarValueFromDatabase(pSQLCommand, DatabaseType, pConnectionId))
|
||||
End If
|
||||
|
||||
Dim oResult As GetScalarValueResponse = Nothing
|
||||
Try
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.ECM
|
||||
oResult = Await _Client.GetScalarValueFromECMAsync(pSQLCommand)
|
||||
Case Constants.DatabaseType.IDB
|
||||
oResult = Await _Client.GetScalarValueFromIDBAsync(pSQLCommand)
|
||||
Case Else
|
||||
oResult = Await _Client.GetScalarValueFromConnectionAsync(pSQLCommand, pConnectionId)
|
||||
End Select
|
||||
|
||||
If oResult Is Nothing OrElse oResult.OK = False Then
|
||||
_Logger.Warn("⚠ GetScalarValueFromServiceAsync failed. Falling back to direct database access.")
|
||||
oFallback = True
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("⚠ GetScalarValueFromServiceAsync failed. Falling back to direct database access.")
|
||||
_Logger.Error(ex)
|
||||
oFallback = True
|
||||
End Try
|
||||
|
||||
If oFallback Then
|
||||
Return Await Task.Run(Function() GetScalarValueFromDatabase(pSQLCommand, DatabaseType, pConnectionId))
|
||||
End If
|
||||
|
||||
Return oResult.Scalar
|
||||
End Function
|
||||
Private Function GetScalarValueFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Object
|
||||
Try
|
||||
Dim oResult As GetScalarValueResponse = Nothing
|
||||
_Logger.Debug("GetScalarValueFromService [{0}] with Connection Id [{1}] and Command [{2}]", DatabaseType.ToString, pConnectionId, pSQLCommand)
|
||||
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.ECM
|
||||
oResult = _Client.GetScalarValueFromECM(pSQLCommand)
|
||||
|
||||
Case Constants.DatabaseType.IDB
|
||||
oResult = _Client.GetScalarValueFromIDB(pSQLCommand)
|
||||
|
||||
Case Else
|
||||
Return GetScalarValueFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
End Select
|
||||
|
||||
If oResult Is Nothing OrElse oResult.OK = False Then
|
||||
_Logger.Warn("⚠ GetScalarValueFromService: Service returned invalid response [{0}]. Falling back to direct database access.", If(oResult Is Nothing, "null", oResult.ErrorMessage))
|
||||
Return GetScalarValueFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
If oResult Is Nothing Then
|
||||
Throw New ApplicationException("Unexpected server error ocurred!")
|
||||
End If
|
||||
|
||||
If oResult.OK = False Then
|
||||
Throw New ApplicationException(oResult.ErrorMessage)
|
||||
End If
|
||||
|
||||
Return oResult.Scalar
|
||||
|
||||
Catch ex As InvalidOperationException
|
||||
_Logger.Warn("⚠ GetScalarValueFromService skipped: [{0}] Falling back to direct database access.", ex.Message)
|
||||
Return GetScalarValueFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("⚠ GetScalarValueFromService failed. Falling back to direct database access.")
|
||||
_Logger.Warn("GetScalarValueFromService failed. Falling back to direct database access.")
|
||||
_Logger.Error(ex)
|
||||
Return GetScalarValueFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
@@ -471,7 +399,6 @@ Public Class DatabaseWithFallback
|
||||
|
||||
Private Function GetScalarValueFromDatabase(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Object
|
||||
Try
|
||||
_Logger.Debug("DBwFF GetScalarValueFromDatabase [{0}] with Connection Id [{1}] and Command [{2}]", DatabaseType.ToString, pConnectionId, pSQLCommand)
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.IDB
|
||||
Return _DatabaseIDB.GetScalarValue(pSQLCommand)
|
||||
@@ -492,68 +419,35 @@ Public Class DatabaseWithFallback
|
||||
|
||||
End Try
|
||||
End Function
|
||||
Private Async Function ExecuteNonQueryFromServiceAsync(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Task(Of Boolean)
|
||||
Dim oFallback As Boolean = False
|
||||
|
||||
_Logger.Debug("ExecuteNonQueryFromServiceAsync called with SQL [{0}], DatabaseType [{1}], ConnectionId [{2}]", pSQLCommand, DatabaseType.ToString, pConnectionId)
|
||||
|
||||
If _Client Is Nothing OrElse _ClientConfig?.ForceDirectDatabaseAccess Then
|
||||
Return Await Task.Run(Function() ExecuteNonQueryFromDatabase(pSQLCommand, DatabaseType, pConnectionId))
|
||||
End If
|
||||
|
||||
Dim oResult As ExecuteNonQueryResponse = Nothing
|
||||
Try
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.ECM
|
||||
oResult = Await _Client.ExecuteNonQueryFromECMAsync(pSQLCommand)
|
||||
Case Constants.DatabaseType.IDB
|
||||
oResult = Await _Client.ExecuteNonQueryFromIDBAsync(pSQLCommand)
|
||||
Case Else
|
||||
oResult = Await _Client.ExecuteNonQueryFromConnectionAsync(pSQLCommand, pConnectionId)
|
||||
End Select
|
||||
|
||||
If oResult Is Nothing OrElse oResult.OK = False Then
|
||||
_Logger.Warn("⚠ ExecuteNonQueryFromServiceAsync failed. Falling back to direct database access.")
|
||||
oFallback = True
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("⚠ ExecuteNonQueryFromServiceAsync failed. Falling back to direct database access.")
|
||||
_Logger.Error(ex)
|
||||
oFallback = True
|
||||
End Try
|
||||
|
||||
If oFallback Then
|
||||
Return Await Task.Run(Function() ExecuteNonQueryFromDatabase(pSQLCommand, DatabaseType, pConnectionId))
|
||||
End If
|
||||
|
||||
Return oResult.Result
|
||||
End Function
|
||||
Private Function ExecuteNonQueryFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Boolean
|
||||
Try
|
||||
Dim oResult As ExecuteNonQueryResponse = Nothing
|
||||
_Logger.Debug("ExecuteNonQueryFromService [{0}] with Connection Id [{1}] and Command [{2}]", DatabaseType.ToString, pConnectionId, pSQLCommand)
|
||||
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.ECM
|
||||
oResult = _Client.ExecuteNonQueryFromECM(pSQLCommand)
|
||||
|
||||
Case Constants.DatabaseType.IDB
|
||||
oResult = _Client.ExecuteNonQueryFromIDB(pSQLCommand)
|
||||
|
||||
Case Else
|
||||
Return ExecuteNonQueryFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
End Select
|
||||
|
||||
If oResult Is Nothing OrElse oResult.OK = False Then
|
||||
_Logger.Warn("⚠ ExecuteNonQueryFromService: Service returned invalid response [{0}]. Falling back to direct database access.", If(oResult Is Nothing, "null", oResult.ErrorMessage))
|
||||
Return ExecuteNonQueryFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
If oResult Is Nothing Then
|
||||
Throw New ApplicationException("Unexpected server error ocurred!")
|
||||
End If
|
||||
|
||||
If oResult.OK = False Then
|
||||
Throw New ApplicationException(oResult.ErrorMessage)
|
||||
End If
|
||||
|
||||
Return oResult.Result
|
||||
|
||||
Catch ex As InvalidOperationException
|
||||
_Logger.Warn("⚠ ExecuteNonQueryFromService skipped: [{0}] Falling back to direct database access.", ex.Message)
|
||||
Return ExecuteNonQueryFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("⚠ ExecuteNonQueryFromService failed. Falling back to direct database access.")
|
||||
_Logger.Warn("ExecuteNonQueryFromService failed. Falling back to direct database access.")
|
||||
_Logger.Error(ex)
|
||||
Return ExecuteNonQueryFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
|
||||
|
||||
@@ -562,8 +456,6 @@ Public Class DatabaseWithFallback
|
||||
|
||||
Private Function ExecuteNonQueryFromDatabase(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Boolean
|
||||
Try
|
||||
_Logger.Debug("ExecuteNonQueryFromDatabase [{0}] with Connection Id [{1}] and Command [{2}]", DatabaseType.ToString, pConnectionId, pSQLCommand)
|
||||
|
||||
Select Case DatabaseType
|
||||
Case Constants.DatabaseType.IDB
|
||||
Return _DatabaseIDB.ExecuteNonQuery(pSQLCommand)
|
||||
|
||||
@@ -44,20 +44,13 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Base">
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Config, Version=1.4.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.7.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -311,9 +304,6 @@
|
||||
<LastGenOutput>Reference.vb</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="ErrorLog.txt" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
@@ -1,333 +0,0 @@
|
||||
08:17:13.7755|DatabaseWithFallback|ERROR >> System.ServiceModel.EndpointNotFoundException: Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0060461 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000.
|
||||
Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0060461 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000. bei DigitalData.Modules.EDMI.API.Client.HandleCommunicationError(Exception ex, String callerName)
|
||||
bei DigitalData.Modules.EDMI.API.Client.VB$StateMachine_58_GetDatatableFromECMAsync.MoveNext()
|
||||
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
|
||||
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
|
||||
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
|
||||
bei System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.VB$StateMachine_35_GetDatatableFromServiceAsync.MoveNext()
|
||||
Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000 bei System.Net.Sockets.Socket.InternalEndConnect(IAsyncResult asyncResult)
|
||||
bei System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
|
||||
bei System.ServiceModel.Channels.SocketConnectionInitiator.ConnectAsyncResult.OnConnect(IAsyncResult result)
|
||||
08:21:27.1457|Client|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während des Wartens auf eine Antwort nach 00:00:06.6057132 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während des Wartens auf eine Antwort nach 00:00:06.6057132 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnDatatableFromCache(String Name, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:06.6050000. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.SingletonConnectionReader.Receive(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.WaitForReply(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Fehler bei Lesevorgang, siehe interne Ausnahme. bei System.Net.Security.NegotiateStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
|
||||
bei System.Net.Security.NegotiateStream.Read(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.ServiceModel.Channels.StreamConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:06.6050000. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionStream.Read(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.Net.Security.NegotiateStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
|
||||
bei System.Net.Security.NegotiateStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
|
||||
08:21:27.1457|DatabaseWithFallback|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während des Wartens auf eine Antwort nach 00:00:06.6057132 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während des Wartens auf eine Antwort nach 00:00:06.6057132 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnDatatableFromCache(String Name, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:06.6050000. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.SingletonConnectionReader.Receive(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.WaitForReply(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Fehler bei Lesevorgang, siehe interne Ausnahme. bei System.Net.Security.NegotiateStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
|
||||
bei System.Net.Security.NegotiateStream.Read(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.ServiceModel.Channels.StreamConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:06.6050000. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionStream.Read(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.Net.Security.NegotiateStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
|
||||
bei System.Net.Security.NegotiateStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
|
||||
08:21:31.2008|Client|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnScalarValue(GetScalarValueRequest pData)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetScalarValueFromECM(String pSQL)
|
||||
Der Anforderungsvorgang wurde nicht innerhalb des zugewiesenen Zeitlimits von 00:00:30 abgeschlossen. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:10.6514301. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.TimeoutConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionStream.Read(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.Net.StreamFramer.ReadMessage()
|
||||
bei System.Net.Security.NegoState.StartReceiveBlob(LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegoState.CheckCompletionBeforeNextReceive(LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegoState.StartSendBlob(Byte[] message, LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
|
||||
bei System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
|
||||
bei System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamSecurityUpgradeInitiatorBase.InitiateUpgrade(Stream stream)
|
||||
bei System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.SendPreamble(IConnection connection, TimeoutHelper& timeoutHelper, ClientFramingDecoder decoder, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
|
||||
bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
08:21:31.2068|DatabaseWithFallback|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnScalarValue(GetScalarValueRequest pData)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetScalarValueFromECM(String pSQL)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetScalarValueFromService(String pSQLCommand, DatabaseType DatabaseType, Int32 pConnectionId)
|
||||
Der Anforderungsvorgang wurde nicht innerhalb des zugewiesenen Zeitlimits von 00:00:30 abgeschlossen. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:10.6514301. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.TimeoutConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionStream.Read(Byte[] buffer, Int32 offset, Int32 count)
|
||||
bei System.Net.StreamFramer.ReadMessage()
|
||||
bei System.Net.Security.NegoState.StartReceiveBlob(LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegoState.CheckCompletionBeforeNextReceive(LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegoState.StartSendBlob(Byte[] message, LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult lazyResult)
|
||||
bei System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
|
||||
bei System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
|
||||
bei System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamSecurityUpgradeInitiatorBase.InitiateUpgrade(Stream stream)
|
||||
bei System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.SendPreamble(IConnection connection, TimeoutHelper& timeoutHelper, ClientFramingDecoder decoder, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
|
||||
bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
08:21:57.3155|Client|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnScalarValue(GetScalarValueRequest pData)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetScalarValueFromECM(String pSQL)
|
||||
Der Anforderungsvorgang wurde nicht innerhalb des zugewiesenen Zeitlimits von 00:00:30 abgeschlossen. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:29.9989994. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.SendPreamble(IConnection connection, TimeoutHelper& timeoutHelper, ClientFramingDecoder decoder, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
|
||||
bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
08:21:57.3165|DatabaseWithFallback|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnScalarValue(GetScalarValueRequest pData)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetScalarValueFromECM(String pSQL)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetScalarValueFromService(String pSQLCommand, DatabaseType DatabaseType, Int32 pConnectionId)
|
||||
Der Anforderungsvorgang wurde nicht innerhalb des zugewiesenen Zeitlimits von 00:00:30 abgeschlossen. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:29.9989994. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.SendPreamble(IConnection connection, TimeoutHelper& timeoutHelper, ClientFramingDecoder decoder, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
|
||||
bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
08:21:58.9285|DatabaseWithFallback|ERROR >> System.ServiceModel.EndpointNotFoundException: Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0050242 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000.
|
||||
Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0050242 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.BufferedConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei DigitalData.Modules.EDMI.API.Client.HandleCommunicationError(Exception ex, String callerName)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000 bei System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
|
||||
bei System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
|
||||
bei System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
08:21:58.9595|DatabaseWithFallback|ERROR >> System.InvalidOperationException: Client is offline.
|
||||
Client is offline. bei DigitalData.Modules.EDMI.API.Client.EnsureAvailable()
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
08:21:58.9595|DatabaseWithFallback|ERROR >> System.InvalidOperationException: Client is offline.
|
||||
Client is offline. bei DigitalData.Modules.EDMI.API.Client.EnsureAvailable()
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
08:21:59.1305|DatabaseWithFallback|ERROR >> System.InvalidOperationException: Client is offline.
|
||||
Client is offline. bei DigitalData.Modules.EDMI.API.Client.EnsureAvailable()
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
08:21:59.1915|DatabaseWithFallback|ERROR >> System.InvalidOperationException: Client is offline.
|
||||
Client is offline. bei DigitalData.Modules.EDMI.API.Client.EnsureAvailable()
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
08:21:59.2075|DatabaseWithFallback|ERROR >> System.InvalidOperationException: Client is offline.
|
||||
Client is offline. bei DigitalData.Modules.EDMI.API.Client.EnsureAvailable()
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
08:22:02.2282|Client|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnDatatableFromCache(String Name, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
Der Anforderungsvorgang wurde nicht innerhalb des zugewiesenen Zeitlimits von 00:00:30 abgeschlossen. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:29.9990010. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.SendPreamble(IConnection connection, TimeoutHelper& timeoutHelper, ClientFramingDecoder decoder, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
|
||||
bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
08:22:02.2282|DatabaseWithFallback|ERROR >> System.TimeoutException: Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Beim Anforderungskanal ist während eines Sendeversuch nach 00:00:30 eine Zeitüberschreitung aufgetreten. Erhöhen Sie den an den Aufruf übergebenen Zeitlimitwert auf "Request", oder erhöhen Sie den SendTimeout-Wert für die Bindung. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
|
||||
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
|
||||
bei DigitalData.Modules.EDMI.API.EDMIServiceReference.IEDMIService.ReturnDatatableFromCache(String Name, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
Der Anforderungsvorgang wurde nicht innerhalb des zugewiesenen Zeitlimits von 00:00:30 abgeschlossen. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
Zeitüberschreitung bei der Socketübertragung nach 00:00:29.9990010. Das für die Bindung festgelegte Zeitlimit wurde überschritten. Der für diesen Vorgang zugewiesene Zeitraum war möglicherweise ein Teil eines längeren Timeouts. bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
bei System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.SendPreamble(IConnection connection, TimeoutHelper& timeoutHelper, ClientFramingDecoder decoder, SecurityMessageProperty& remoteSecurity)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
|
||||
bei System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
|
||||
08:22:03.2452|DatabaseWithFallback|ERROR >> System.ServiceModel.EndpointNotFoundException: Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0020254 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000.
|
||||
Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0020254 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.BufferedConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei DigitalData.Modules.EDMI.API.Client.HandleCommunicationError(Exception ex, String callerName)
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000 bei System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
|
||||
bei System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
|
||||
bei System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
08:22:03.2552|DatabaseWithFallback|ERROR >> System.InvalidOperationException: Client is offline.
|
||||
Client is offline. bei DigitalData.Modules.EDMI.API.Client.EnsureAvailable()
|
||||
bei DigitalData.Modules.EDMI.API.Client.GetDatatableByName(String DatatableName, String FilterExpression, String SortByColumn)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.GetDatatable(String pDataTableName, String pFallbackSQL, DatabaseType pFallbackType, String pFilterExpression, String pSortByColumn, Boolean pForceFallback, Int32 pConnectionId)
|
||||
08:22:13.3959|DatabaseWithFallback|ERROR >> System.ServiceModel.EndpointNotFoundException: Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0040254 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000.
|
||||
Es konnte keine Verbindung mit "net.tcp://10.1.2.152:9000/DigitalData/Services/Main" hergestellt werden. Der Verbindungsversuch hat für einen Zeitraum von 00:00:01.0040254 angedauert. TCP-Fehlercode 10061: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000.
|
||||
Server stack trace:
|
||||
bei System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.BufferedConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
|
||||
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
|
||||
|
||||
Exception rethrown at [0]:
|
||||
bei DigitalData.Modules.EDMI.API.Client.HandleCommunicationError(Exception ex, String callerName)
|
||||
bei DigitalData.Modules.EDMI.API.Client.ExecuteNonQueryFromIDB(String pSQL)
|
||||
bei DigitalData.Modules.EDMI.API.DatabaseWithFallback.ExecuteNonQueryFromService(String pSQLCommand, DatabaseType DatabaseType, Int32 pConnectionId)
|
||||
Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 10.1.2.152:9000 bei System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
|
||||
bei System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
|
||||
bei System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
|
||||
@@ -25,7 +25,7 @@ Namespace Modules.IDB
|
||||
Return True
|
||||
End If
|
||||
|
||||
Logger.Warn("⚠ Error while setting Attribute Value: [{0}]", oResponse.ErrorMessage)
|
||||
Logger.Warn("Error while setting Attribute Value: [{0}]", oResponse.ErrorMessage)
|
||||
Return False
|
||||
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Digital Data")>
|
||||
<Assembly: AssemblyProduct("EDMIAPI")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("2.7.0")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2023")>
|
||||
<Assembly: AssemblyTrademark("1.6.1.1")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.7.0.0")>
|
||||
<Assembly: AssemblyVersion("1.6.1.1")>
|
||||
<Assembly: AssemblyFileVersion("1.6.1.1")>
|
||||
|
||||
@@ -44,38 +44,6 @@
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
</packages>
|
||||
@@ -45,7 +45,8 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
|
||||
2
Encryption/My Project/Settings.Designer.vb
generated
2
Encryption/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
</packages>
|
||||
@@ -45,8 +45,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
|
||||
2
Filesystem/My Project/Settings.Designer.vb
generated
2
Filesystem/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net48" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net48" />
|
||||
<package id="NuGet.CommandLine" version="6.13.2" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="protobuf-net" version="2.4.0" targetFramework="net461" />
|
||||
|
||||
@@ -49,13 +49,16 @@
|
||||
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\BouncyCastle.Cryptography.2.5.0\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Base">
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.9.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DocumentFormat.OpenXml, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
||||
@@ -64,95 +67,74 @@
|
||||
<Reference Include="DocumentFormat.OpenXml.Framework, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DocumentFormat.OpenXml.Framework.3.2.0\lib\net46\DocumentFormat.OpenXml.Framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Markdown, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Markdown.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.wia.gateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6973b5c22dcf45f7, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Google.Protobuf, Version=3.33.2.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.33.2\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.5\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.Cryptography, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.Cryptography.10.0.5\lib\net462\Microsoft.Bcl.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.HashCode.6.0.0\lib\net462\Microsoft.Bcl.HashCode.dll</HintPath>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NativeSDK.Exceptions, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Exceptions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings.Edition, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.Edition.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -162,8 +144,8 @@
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenMcdf, Version=3.1.4.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.3.1.4\lib\netstandard2.0\OpenMcdf.dll</HintPath>
|
||||
<Reference Include="OpenMcdf, Version=2.4.1.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.2.4.1\lib\net40\OpenMcdf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="protobuf-net, Version=3.0.0.0, Culture=neutral, PublicKeyToken=257b51d87d2e4d67, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\protobuf-net.3.2.46\lib\net462\protobuf-net.dll</HintPath>
|
||||
@@ -175,64 +157,55 @@
|
||||
<HintPath>..\packages\RtfPipe.2.0.7677.4303\lib\net45\RtfPipe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
|
||||
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.CodeDom.8.0.0\lib\net462\System.CodeDom.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Collections.Immutable, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.10.0.5\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
<Reference Include="System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.DirectoryServices.AccountManagement" />
|
||||
<Reference Include="System.Formats.Asn1, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Asn1.10.0.5\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.IO.Packaging, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.10.0.5\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Pipelines, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Pipelines.10.0.5\lib\net462\System.IO.Pipelines.dll</HintPath>
|
||||
<Reference Include="System.IO.Packaging, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.8.0.1\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
|
||||
<Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Formatting, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.6.0.0\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.10.0.5\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.8.0.1\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.10.0.5\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.10.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
<Reference Include="System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.8.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Channels, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Channels.10.0.5\lib\net462\System.Threading.Channels.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.6.1\lib\net462\System.ValueTuple.dll</HintPath>
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
@@ -265,8 +238,6 @@
|
||||
<Compile Include="GrapQLInterface\LoginData.vb" />
|
||||
<Compile Include="GrapQLInterface\LogoutData.vb" />
|
||||
<Compile Include="GrapQLInterface\QueryData.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\ebInterface6.1\InvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Enums\ErrorCodes.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Enums\Item_Types.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Exceptions.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
@@ -288,7 +259,6 @@
|
||||
<Compile Include="ZUGFeRDInterface\PDFConverter.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Peppol_UBL2.1\CreditNoteType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Peppol_UBL2.1\InvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\RejectionStringRow.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Validator.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version1.0\CrossIndustryDocumentType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface.vb" />
|
||||
@@ -300,8 +270,6 @@
|
||||
<Compile Include="ZUGFeRDInterface\Version2.2_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.3_3_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.3_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.4_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.5_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\XmlItemProperty.vb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -330,11 +298,11 @@
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Digital Data")>
|
||||
<Assembly: AssemblyProduct("Modules.Interfaces")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("2.5.0.0")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.5.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.5.0.0")>
|
||||
<Assembly: AssemblyVersion("2.3.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.3.0.0")>
|
||||
|
||||
@@ -3,7 +3,6 @@ Imports System.Xml
|
||||
Imports System.Xml.Serialization
|
||||
Imports DigitalData.Modules.Interfaces.Exceptions
|
||||
Imports DigitalData.Modules.Interfaces.PDFEmbeds
|
||||
Imports DigitalData.Modules.Interfaces.PropertyValues
|
||||
Imports DigitalData.Modules.Interfaces.ZUGFeRD
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports GdPicture14
|
||||
@@ -20,7 +19,8 @@ Public Class ZUGFeRDInterface
|
||||
Public Const ZUGFERD_SPEC_DEFAULT = "DEFAULT"
|
||||
Public Const ZUGFERD_SPEC_10 = "ZUGFERD_10"
|
||||
Public Const ZUGFERD_SPEC_2x = "ZUGFERD_2x"
|
||||
Public Const ZUGFERD_SPEC_2_3x = "ZUGFERD_2_3x"
|
||||
|
||||
Public Const UBL_SPEC_21 = "UBL_21"
|
||||
|
||||
Public Const XMLSCHEMA_ZUGFERD_10 = "Version1_0"
|
||||
Public Const XMLSCHEMA_ZUGFERD_20 = "Version2_0"
|
||||
@@ -28,16 +28,9 @@ Public Class ZUGFeRDInterface
|
||||
Public Const XMLSCHEMA_ZUGFERD_22 = "Version2_2_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_23 = "Version2_3_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_233 = "Version2_3_3_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_24 = "Version2_4_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_25 = "Version2_5_FacturX"
|
||||
|
||||
Public Const UBL_SPEC_21 = "UBL_21"
|
||||
Public Const XMLSCHEMA_UBL_21_INVOICE = "UBL2_1_INVOICE"
|
||||
Public Const XMLSCHEMA_UBL_21_CREDITNOTE = "UBL2_1_CREDITNOTE"
|
||||
|
||||
Public Const EBINTERFACE_SPEC_61 = "EBINTERFACE_61"
|
||||
Public Const XMLSCHEMA_EBINTERFACE_61 = "Version6_1"
|
||||
|
||||
Public Const RECEIPT_TYPE_XML = "XML"
|
||||
Public Const RECEIPT_TYPE_PDF = "PDF"
|
||||
|
||||
@@ -57,21 +50,17 @@ Public Class ZUGFeRDInterface
|
||||
UnsupportedFormat
|
||||
FileTooBig
|
||||
UnknownError
|
||||
NotInUse
|
||||
End Enum
|
||||
|
||||
Public ReadOnly Property FileGroup As FileGroups
|
||||
Public ReadOnly Property PropertyValues As PropertyValues
|
||||
|
||||
|
||||
Public Class ZugferdOptions
|
||||
Public Property AllowFacturX_Filename As Boolean = True
|
||||
Public Property AllowXRechnung_Filename As Boolean = True
|
||||
Public Property AllowZugferd_1_0_Schema As Boolean = True
|
||||
Public Property AllowZugferd_2_x_Schema As Boolean = True
|
||||
Public Property AllowZugferd_2_3_x_Schema As Boolean = True
|
||||
Public Property AllowPeppol_3_x_Schema As Boolean = False
|
||||
Public Property AllowEBInterface_Schema As Boolean = False
|
||||
End Class
|
||||
|
||||
Public Class ZugferdResult
|
||||
@@ -92,7 +81,6 @@ Public Class ZUGFeRDInterface
|
||||
Public ElementValue As String
|
||||
Public ErrorMessage As String
|
||||
Public ErrorMessageDE As String
|
||||
Public ErrorMessageToken As String
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
@@ -142,81 +130,24 @@ Public Class ZUGFeRDInterface
|
||||
AllowedFilenames = oAllowedFilenames
|
||||
End Sub
|
||||
|
||||
Public Function FilterPropertyMap(pPropertyMapList As List(Of XmlItemProperty), pSpecification As String) As Dictionary(Of String, XmlItemProperty)
|
||||
_logger.Debug("Filtering Property map list for Specification [{0}]", pSpecification)
|
||||
Public Function FilterPropertyMap(pPropertyMap As Dictionary(Of String, XmlItemProperty), pSpecification As String) As Dictionary(Of String, XmlItemProperty)
|
||||
_logger.Debug("Filtering Property map for Specification [{0}]", pSpecification)
|
||||
|
||||
If pSpecification = ZUGFERD_SPEC_10 Then
|
||||
Try
|
||||
|
||||
_logger.Debug("Special Case [{0}], including [{1}]", ZUGFERD_SPEC_10, ZUGFERD_SPEC_DEFAULT)
|
||||
|
||||
Dim countElements As Integer = pPropertyMapList.Where(Function(x) x.Specification = pSpecification Or x.Specification = ZUGFERD_SPEC_DEFAULT).Count
|
||||
_logger.Debug("Property map list contains [{0}] elements for specification [{1}]", countElements, pSpecification)
|
||||
|
||||
Return pPropertyMapList.
|
||||
Where(Function(kv) kv.Specification = pSpecification Or kv.Specification = ZUGFERD_SPEC_DEFAULT).
|
||||
ToDictionary(Function(kv) kv.XMLPath, Function(kv) kv)
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
ElseIf pSpecification = EBINTERFACE_SPEC_61 Then
|
||||
|
||||
Try
|
||||
' root-Elemente werden hier herausgefiltert
|
||||
Dim countElements As Integer = pPropertyMapList.Where(Function(x) x.Specification = pSpecification And Not x.XMLPath.StartsWith("root.")).Count
|
||||
_logger.Debug("Property map list contains [{0}] elements for specification [{1}]", countElements, pSpecification)
|
||||
|
||||
Return pPropertyMapList.
|
||||
Where(Function(kv) kv.Specification = pSpecification And Not kv.XMLPath.StartsWith("root.")).
|
||||
ToDictionary(Function(kv) kv.XMLPath, Function(kv) kv)
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
_logger.Debug("Special Case [{0}], including [{1}]", ZUGFERD_SPEC_10, ZUGFERD_SPEC_DEFAULT)
|
||||
Return pPropertyMap.
|
||||
Where(Function(kv) kv.Value.Specification = pSpecification Or kv.Value.Specification = ZUGFERD_SPEC_DEFAULT).
|
||||
ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value)
|
||||
Else
|
||||
|
||||
Try
|
||||
|
||||
Dim countElements As Integer = pPropertyMapList.Where(Function(x) x.Specification = pSpecification).Count
|
||||
_logger.Debug("Property map list contains [{0}] elements for specification [{1}]", countElements, pSpecification)
|
||||
|
||||
Return pPropertyMapList.
|
||||
Where(Function(kv) kv.Specification = pSpecification).
|
||||
ToDictionary(Function(kv) kv.XMLPath, Function(kv) kv)
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
_logger.Debug("Using Specification [{0}]", pSpecification)
|
||||
Return pPropertyMap.
|
||||
Where(Function(kv) kv.Value.Specification = pSpecification).
|
||||
ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value)
|
||||
End If
|
||||
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Public Function FilterRootPropertyMap(pPropertyMapList As List(Of XmlItemProperty), pSpecification As String) As Dictionary(Of String, XmlItemProperty)
|
||||
|
||||
' Aktuell verwendet nur ebeInterafce attribute im root-Knoten
|
||||
If pSpecification = EBINTERFACE_SPEC_61 Then
|
||||
Try
|
||||
' root-Elemente werden hier herausgefiltert
|
||||
Dim countElements As Integer = pPropertyMapList.Where(Function(x) x.Specification = pSpecification And x.XMLPath.StartsWith("root.")).Count
|
||||
_logger.Debug("Property map list contains [{0}] root attribute elements for specification [{1}]", countElements, pSpecification)
|
||||
|
||||
Return pPropertyMapList.
|
||||
Where(Function(kv) kv.Specification = pSpecification And kv.XMLPath.StartsWith("root.")).
|
||||
ToDictionary(Function(kv) kv.XMLPath, Function(kv) kv)
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End If
|
||||
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Public Function GetSerializedXMLContentFromFile(oFileInfo As FileInfo) As ZugferdResult
|
||||
Dim oResult = New ZugferdResult()
|
||||
Dim oMessage As String = String.Empty
|
||||
|
||||
Try
|
||||
Dim oFileSize As Integer = oFileInfo.Length
|
||||
@@ -234,14 +165,6 @@ Public Class ZUGFeRDInterface
|
||||
}
|
||||
End Using
|
||||
|
||||
oResult = _Validator.ValidateZUGFeRDDocument(oResult)
|
||||
|
||||
If oResult.ValidationErrors.Count > 0 Then
|
||||
_logger.Warn($"XML-Logik - Nach Validator() Errors: {oResult.ValidationErrors.Count}")
|
||||
Else
|
||||
_logger.Info($"XML-Logik - Nach Validator() NO Errors.")
|
||||
End If
|
||||
|
||||
Catch ex As ZUGFeRDExecption
|
||||
' Don't log ZUGFeRD Exceptions here, they should be handled by the calling code.
|
||||
' It also produces misleading error messages when checking if an attachment is a zugferd file.
|
||||
@@ -249,7 +172,7 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.UnsupportedFerdException, "Datei ist eine ungültige XML Datei.")
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, "Datei ist eine ungültige XML Datei.")
|
||||
End Try
|
||||
|
||||
If oResult.ValidationErrors.Any() Then
|
||||
@@ -265,6 +188,7 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="Path"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
Public Function ExtractZUGFeRDFileWithGDPicture(Path As String) As ZugferdResult
|
||||
Dim oResult = ValidateZUGFeRDFileWithGDPicture(Path)
|
||||
oResult = ValidateZUGFeRDDocument(oResult)
|
||||
@@ -282,6 +206,7 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="Stream"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
Public Function ExtractZUGFeRDFileWithGDPicture(Stream As Stream) As ZugferdResult
|
||||
Dim oResult = ValidateZUGFeRDFileWithGDPicture(Stream)
|
||||
oResult = ValidateZUGFeRDDocument(oResult)
|
||||
@@ -304,6 +229,7 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="pStream"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
''' <returns>The embedded xml data as an XPath document</returns>
|
||||
Public Function ValidateZUGFeRDFileWithGDPicture(pStream As Stream) As ZugferdResult
|
||||
Dim oEmbedExtractor = New PDFEmbeds(_logConfig)
|
||||
@@ -322,7 +248,7 @@ Public Class ZUGFeRDInterface
|
||||
Throw ex
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Error while validating eInvoice file with GDPicture")
|
||||
_logger.Warn("Error while validating ZUGFeRD file with GDPicture")
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
@@ -332,23 +258,18 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="pPath"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
''' <returns>The embedded xml data as an XPath document</returns>
|
||||
Public Function ValidateZUGFeRDFileWithGDPicture(pPath As String, Optional Validate As Boolean = False) As ZugferdResult
|
||||
Public Function ValidateZUGFeRDFileWithGDPicture(pPath As String) As ZugferdResult
|
||||
Dim oEmbedExtractor = New PDFEmbeds(_logConfig)
|
||||
|
||||
Try
|
||||
' Extract XML attachments only!
|
||||
Dim oFiles = oEmbedExtractor.Extract(pPath, New List(Of String) From {"xml"})
|
||||
If Validate Then
|
||||
Dim oZugferdResult = HandleEmbeddedFiles(oFiles)
|
||||
Return _Validator.ValidateZUGFeRDDocument(oZugferdResult)
|
||||
Else
|
||||
' Attachments are in this case the files that are embedded into a pdf file,
|
||||
' like for example the zugferd-invoice.xml file
|
||||
Return HandleEmbeddedFiles(oFiles)
|
||||
End If
|
||||
|
||||
|
||||
' Attachments are in this case the files that are embedded into a pdf file,
|
||||
' like for example the zugferd-invoice.xml file
|
||||
Return HandleEmbeddedFiles(oFiles)
|
||||
|
||||
Catch ex As ZUGFeRDExecption
|
||||
' Don't log ZUGFeRD Exceptions here, they should be handled by the calling code.
|
||||
@@ -356,15 +277,19 @@ Public Class ZUGFeRDInterface
|
||||
Throw ex
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Error while validating eInvoice file with GDPicture")
|
||||
_logger.Warn("Error while validating ZUGFeRD file with GDPicture")
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function HandleEmbeddedFiles(pResults As List(Of PDFEmbeds.EmbeddedFile)) As ZugferdResult
|
||||
If pResults Is Nothing OrElse pResults.Count = 0 Then
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdNoXMLAttachmentFound, "Die Datei ist keine gültige ZUGFeRD-Datei, es wurde kein passender XML-Anhang gefunden.")
|
||||
If pResults Is Nothing Then
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil die Attachments nicht gelesen werden konnten.")
|
||||
End If
|
||||
|
||||
If pResults.Count = 0 Then
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil sie keine Attachments enthält.")
|
||||
End If
|
||||
|
||||
' Find the first file which filename matches the valid filenames for embedded invoice files
|
||||
@@ -373,7 +298,7 @@ Public Class ZUGFeRDInterface
|
||||
FirstOrDefault()
|
||||
|
||||
If oValidResult Is Nothing Then
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdNoXMLAttachmentFound, "Die Datei ist keine ZUGFeRD Datei, weil keine passende XML-Datei gefunden wurde.")
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil keine entsprechende XML-Datei gefunden wurde.")
|
||||
End If
|
||||
|
||||
' Search the embedded files for the ones which are allowed as per the configuration.
|
||||
@@ -383,7 +308,7 @@ Public Class ZUGFeRDInterface
|
||||
FirstOrDefault()
|
||||
|
||||
If oAllowedResult Is Nothing Then
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdNoXMLAttachmentFound, "Datei enthält einen XML-Anhang mit einem ungültigen Dateinamen.", oAllowedResult.FileName)
|
||||
Throw New ZUGFeRDExecption(ErrorType.UnsupportedFormat, "Datei ist eine ZUGFeRD Datei, aber das Format wird nicht unterstützt.", oAllowedResult.FileName)
|
||||
End If
|
||||
|
||||
Try
|
||||
@@ -401,7 +326,7 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdException, "XML-Datei konnte nicht gelesen werden.")
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, "Datei ist eine ungültige ZUGFeRD Datei.")
|
||||
End Try
|
||||
End Function
|
||||
|
||||
@@ -433,7 +358,6 @@ Public Class ZUGFeRDInterface
|
||||
})
|
||||
End If
|
||||
|
||||
'' Reihenfolge 2.0 muss unverändert bleiben. Älteste Version immer zuerst!
|
||||
If _Options.AllowZugferd_2_x_Schema Then
|
||||
oAllowedTypes.AddRange(New List(Of AllowedType) From {
|
||||
New AllowedType With {
|
||||
@@ -450,32 +374,16 @@ Public Class ZUGFeRDInterface
|
||||
.SchemaType = GetType(Version2_2_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_22
|
||||
}
|
||||
})
|
||||
End If
|
||||
|
||||
'' Reihenfolge ab 2.3 geändert. Neuste Version immer zuerst bzw. oben
|
||||
If _Options.AllowZugferd_2_3_x_Schema Then
|
||||
oAllowedTypes.AddRange(New List(Of AllowedType) From {
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_5_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_25
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_4_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_24
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_3_3_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_233
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_3_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.Specification = ZUGFERD_SPEC_2x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_23
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_3_3_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_233
|
||||
}
|
||||
})
|
||||
End If
|
||||
@@ -495,16 +403,6 @@ Public Class ZUGFeRDInterface
|
||||
})
|
||||
End If
|
||||
|
||||
If _Options.AllowEBInterface_Schema Then
|
||||
oAllowedTypes.AddRange(New List(Of AllowedType) From {
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(EBINTERFACE_61.InvoiceType),
|
||||
.Specification = EBINTERFACE_SPEC_61,
|
||||
.XMLSchema = XMLSCHEMA_EBINTERFACE_61
|
||||
}
|
||||
})
|
||||
End If
|
||||
|
||||
For Each oType In oAllowedTypes
|
||||
Dim oTypeName As String = oType.SchemaType.FullName
|
||||
Dim oSerializer As New XmlSerializer(oType.SchemaType)
|
||||
@@ -528,7 +426,8 @@ Public Class ZUGFeRDInterface
|
||||
Next
|
||||
|
||||
If oObject Is Nothing Then
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.UnsupportedFerdException, "Unsupported Format")
|
||||
'Throw New ApplicationException("No Types matched the given document. Document could not be serialized.")
|
||||
Throw New ZUGFeRDExecption(ErrorType.UnsupportedFormat, "Unsupported Format")
|
||||
End If
|
||||
|
||||
pResult.Specification = oSpecification
|
||||
@@ -543,9 +442,8 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Dim oMessage = "Datei ist eine ungültige Datei oder das Format wird nicht unterstüzt, oder das Format ist deaktiviert."
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.UnsupportedFerdException, oMessage)
|
||||
Dim oMessage = "Datei ist eine ungültige ZUGFeRD Datei oder das Format wird nicht unterstüzt, oder das Format ist deaktiviert."
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, oMessage)
|
||||
End Try
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
Public Enum ErrorCodes
|
||||
NotInUse = 0
|
||||
ValidationException = 20001
|
||||
MD5HashException = 20002
|
||||
UnsupportedFerdException = 20003
|
||||
InvalidFerdException = 20004
|
||||
TooMuchFerdsException = 20005
|
||||
InvalidFerdNoXMLAttachmentFound = 20006
|
||||
MissingValueException = 20007
|
||||
FileSizeLimitReachedException = 20008
|
||||
OutOfMemoryException = 20009
|
||||
UnhandledException = 20010
|
||||
FileMoveException = 200011
|
||||
End Enum
|
||||
@@ -1,8 +1,7 @@
|
||||
Public Enum Item_Types
|
||||
StringType = 0 '0
|
||||
DateType = 1 '1
|
||||
MoneyType = 2 '2
|
||||
FileType = 3 '3
|
||||
ListType = 4 '4 - vgl. Währung
|
||||
StringType '0
|
||||
DateType '1
|
||||
MoneyType '2
|
||||
FileType '3
|
||||
|
||||
End Enum
|
||||
|
||||
@@ -4,11 +4,7 @@ Public Class Exceptions
|
||||
Public Class ZUGFeRDExecption
|
||||
Inherits ApplicationException
|
||||
|
||||
Public ReadOnly Property ErrorCode() As ErrorCodes
|
||||
|
||||
Public ReadOnly Property Param1 As String = String.Empty
|
||||
|
||||
Public ReadOnly Property Param2 As String = String.Empty
|
||||
Public ReadOnly Property ErrorType() As ZUGFeRDInterface.ErrorType
|
||||
|
||||
''' <summary>
|
||||
''' Contains the name of the extracted xml file if already extracted.
|
||||
@@ -16,37 +12,18 @@ Public Class Exceptions
|
||||
''' <returns>A filename like zugferd-invoice.xml</returns>
|
||||
Public ReadOnly Property XmlFile As String = String.Empty
|
||||
|
||||
Public Sub New(pErrorCode As ErrorCodes, Message As String)
|
||||
Public Sub New(ErrorType As ZUGFeRDInterface.ErrorType, Message As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorCode = pErrorCode
|
||||
_ErrorType = ErrorType
|
||||
End Sub
|
||||
|
||||
Public Sub New(pErrorCode As ErrorCodes, Message As String, pXmlFileName As String)
|
||||
Public Sub New(ErrorType As ZUGFeRDInterface.ErrorType, Message As String, pXmlFileName As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorCode = pErrorCode
|
||||
_ErrorType = ErrorType
|
||||
_XmlFile = pXmlFileName
|
||||
End Sub
|
||||
|
||||
Public Sub New(pErrorCode As ErrorCodes, Param1 As String, Param2 As String, Message As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorCode = pErrorCode
|
||||
_Param1 = Param1
|
||||
_Param2 = Param2
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub New(pErrorCode As ErrorCodes, Param1 As String, Param2 As String, Message As String, pXmlFileName As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorCode = pErrorCode
|
||||
_Param1 = Param1
|
||||
_Param2 = Param2
|
||||
_XmlFile = pXmlFileName
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Public Class ValidationException
|
||||
@@ -54,13 +31,8 @@ Public Class Exceptions
|
||||
|
||||
Public ValidationErrors As List(Of ZugferdValidationError)
|
||||
|
||||
Public ReadOnly Property ErrorCode() As ErrorCodes
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New("ZUGFeRD document found but validation failed!")
|
||||
|
||||
_ErrorCode = ErrorCodes.ValidationException
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
End Class
|
||||
|
||||
@@ -205,8 +205,7 @@ Public Class PDFEmbeds
|
||||
End If
|
||||
Else
|
||||
Logger.Error("An error occurred getting the file name for [{0}]. Status: {1}", oFileName, GDPicturePDF.GetStat().ToString())
|
||||
Dim oMessage = String.Format("An error occurred getting the file name for [{0}]. Status: {1}", oFileName, GDPicturePDF.GetStat().ToString())
|
||||
Throw New ApplicationException(oMessage)
|
||||
Continue For
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
Imports System.Globalization
|
||||
Imports System.Reflection
|
||||
Imports System.Reflection
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Xml
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports GdPicture.Internal.MSOfficeBinary.translator.Spreadsheet.XlsFileFormat.Records
|
||||
Imports GdPicture.Internal.MSOfficeBinary.translator.Tools
|
||||
|
||||
Public Class PropertyValues
|
||||
Private _logger As Logger
|
||||
@@ -31,7 +27,6 @@ Public Class PropertyValues
|
||||
Public IsRequired As Boolean
|
||||
Public GroupCounter As Integer = -1
|
||||
|
||||
Public EN16931_ID As String
|
||||
Public Description As String
|
||||
Public Value As String
|
||||
Public XMLPath As String
|
||||
@@ -40,7 +35,6 @@ Public Class PropertyValues
|
||||
End Class
|
||||
|
||||
Public Class MissingProperty
|
||||
Public EN16931_ID As String
|
||||
Public Description As String
|
||||
Public XMLPath As String
|
||||
|
||||
@@ -60,7 +54,7 @@ Public Class PropertyValues
|
||||
ToDictionary(Function(Item) Item.Key,
|
||||
Function(Item) Item.Value)
|
||||
|
||||
_logger.Debug("Found {0} ungrouped properties.", oDefaultProperties.Count)
|
||||
_logger.Debug("Found {0} default properties.", oDefaultProperties.Count)
|
||||
|
||||
' PropertyMap items with `IsGrouped = True` are grouped by group scope
|
||||
Dim oGroupedProperties = PropertyMap.
|
||||
@@ -74,7 +68,7 @@ Public Class PropertyValues
|
||||
Dim oGroupScope As String = oGroup.Key
|
||||
|
||||
Dim oPropertyList As New Dictionary(Of XmlItemProperty, List(Of Object))
|
||||
Dim oRowCount = 0 ' TODO - Es wird anhand der Anzahl XML-Knoten ermittelt wieviele Rows gelesen werden???????
|
||||
Dim oRowCount = 0
|
||||
|
||||
_logger.Debug($"Fetching Property values for group [{oGroupScope}].")
|
||||
|
||||
@@ -118,60 +112,34 @@ Public Class PropertyValues
|
||||
Dim oPropertyDescription As String = oColumn.Key.Description
|
||||
Dim oPropertyPath As String = oColumn.Key.XMLPath
|
||||
Dim oItemType As Integer = oColumn.Key.ItemType
|
||||
Dim oEN16931Value As String = oColumn.Key.EN16931_ID
|
||||
|
||||
Dim oRowCounter = oRowIndex + oGlobalGroupCounter + 1
|
||||
|
||||
' Returns nothing if oColumn.Value contains an empty list
|
||||
Dim oPropertyValue = oColumn.Value.ElementAtOrDefault(oRowIndex)
|
||||
|
||||
'_logger.Debug("Processing itemColumn *TableColumn* [{0}].", oTableColumn)
|
||||
'If oTableColumn = "INVOICE_SELLER_EMAIL" Then
|
||||
' Console.WriteLine("INVOICE_SELLER_EMAIL")
|
||||
'ElseIf oTableColumn = "INVOICE_POSITION_ARTICLE" Then
|
||||
' Console.WriteLine("INVOICE_POSITION_ARTICLE")
|
||||
'End If
|
||||
|
||||
_logger.Debug("Processing itemSpecification *TableColumn* [{0}].", oTableColumn)
|
||||
If oTableColumn = "INVOICE_SELLER_EMAIL" Then
|
||||
Console.WriteLine("INVOICE_SELLER_EMAIL")
|
||||
ElseIf oTableColumn = "INVOICE_POSITION_ARTICLE" Then
|
||||
Console.WriteLine("INVOICE_POSITION_ARTICLE")
|
||||
End If
|
||||
If IsNothing(oPropertyValue) OrElse String.IsNullOrEmpty(oPropertyValue) Then
|
||||
If oColumn.Key.IsRequired Then
|
||||
_logger.Warn($"{MessageId} - oPropertyValue for column [{oTableColumn}] is empty or not found but is required. Continuing with Empty String.")
|
||||
_logger.Warn($"{MessageId} # oPropertyValue for specification [{oTableColumn}] is empty or not found but is required. Continuing with Empty String.")
|
||||
Dim oMissingProperty = New MissingProperty() With {
|
||||
.EN16931_ID = oEN16931Value,
|
||||
.Description = oPropertyDescription,
|
||||
.XMLPath = oPropertyPath
|
||||
}
|
||||
oResult.MissingProperties.Add(oMissingProperty)
|
||||
Else
|
||||
_logger.Debug($"{MessageId} - oPropertyValue for column [{oTableColumn}] is empty or not found. Continuing with Empty String.")
|
||||
_logger.Debug($"{MessageId} # oPropertyValue for specification [{oTableColumn}] is empty or not found. Continuing with Empty String.")
|
||||
End If
|
||||
|
||||
oPropertyValue = String.Empty
|
||||
End If
|
||||
|
||||
If (oPropertyValue IsNot Nothing) Then
|
||||
Dim logValue As String = oPropertyValue.ToString()
|
||||
If logValue.Length > 50 Then
|
||||
_logger.Debug("Item [{0}] has value '{1}...'", oTableColumn, logValue.Substring(1, 50))
|
||||
Else
|
||||
_logger.Debug("Item [{0}] has value '{1}'", oTableColumn, oPropertyValue)
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
If oItemType = Item_Types.MoneyType Then
|
||||
oPropertyValue = GetFormattedDecimalValue(oPropertyValue)
|
||||
End If
|
||||
|
||||
If oTableColumn = "INVOICE_CURRENCY" Or oItemType = Item_Types.ListType Then
|
||||
Dim oValuestring = oPropertyValue.ToString()
|
||||
|
||||
' Bei Listenelementen entfernen wir den String Item, um den Wert zu erhalten
|
||||
If oValuestring.Contains("Item") Then
|
||||
oValuestring = oValuestring.Replace("Item", "")
|
||||
End If
|
||||
|
||||
oPropertyValue = oValuestring
|
||||
End If
|
||||
_logger.Debug("ItemSpecification [{0}] has value '{1}'", oTableColumn, oPropertyValue)
|
||||
|
||||
oResult.ValidProperties.Add(New ValidProperty() With {
|
||||
.MessageId = MessageId,
|
||||
@@ -182,8 +150,7 @@ Public Class PropertyValues
|
||||
.TableColumn = oTableColumn,
|
||||
.IsRequired = oIsRequired,
|
||||
.XMLPath = oPropertyPath,
|
||||
.ItemType = oItemType,
|
||||
.EN16931_ID = oEN16931Value
|
||||
.ItemType = oItemType
|
||||
})
|
||||
Next
|
||||
Next
|
||||
@@ -202,12 +169,11 @@ Public Class PropertyValues
|
||||
Dim oIsRequired = oItem.Value.IsRequired
|
||||
Dim oDescription = oItem.Value.Description
|
||||
Dim oItemType = oItem.Value.ItemType
|
||||
Dim oEN16931_ID = oItem.Value.EN16931_ID
|
||||
|
||||
Try
|
||||
oPropertyValueList = GetPropValue(pDocument, oItem.Key)
|
||||
Catch ex As Exception
|
||||
_logger.Warn("{2} - Unknown error occurred while fetching specification [{0}] in group [{1}]:", oTableColumn, oItem.Value.GroupScope, MessageId)
|
||||
_logger.Warn("{2} # Unknown error occurred while fetching specification [{0}] in group [{1}]:", oPropertyDescription, oItem.Value.GroupScope, MessageId)
|
||||
_logger.Warn("ERROR-MESSAGE [{0}]", ex.Message)
|
||||
_logger.Error(ex)
|
||||
oPropertyValueList = New List(Of Object)
|
||||
@@ -226,55 +192,37 @@ Public Class PropertyValues
|
||||
|
||||
' This should hopefully show config errors
|
||||
If TypeOf oPropertyValue Is List(Of Object) Then
|
||||
_logger.Warn("Item [{0}] may be configured incorrectly", oTableColumn)
|
||||
_logger.Warn("Item with specification [{0}] may be configured incorrectly", oPropertyDescription)
|
||||
oPropertyValue = Nothing
|
||||
End If
|
||||
|
||||
If IsComplexeObject(oPropertyValue) = True Then
|
||||
_logger.Debug("Item Value [{0}] is complexe. cant be used.", oTableColumn)
|
||||
oPropertyValue = Nothing
|
||||
End If
|
||||
|
||||
End Select
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Unknown error occurred while processing specification [{0}]:", oTableColumn)
|
||||
_logger.Warn("Unknown error occurred while processing specification [{0}]:", oPropertyDescription)
|
||||
_logger.Error(ex)
|
||||
oPropertyValue = Nothing
|
||||
End Try
|
||||
|
||||
If IsNothing(oPropertyValue) OrElse String.IsNullOrEmpty(oPropertyValue) Then
|
||||
If oItem.Value.IsRequired Then
|
||||
_logger.Warn("Specification [{0}] is empty, but marked as required! Skipping.", oTableColumn)
|
||||
_logger.Warn("{0} # Specification [{1}] is empty, but marked as required! Skipping.", MessageId, oPropertyDescription)
|
||||
Dim oMissingProperty = New MissingProperty With
|
||||
{
|
||||
.EN16931_ID = oEN16931_ID,
|
||||
.Description = oPropertyDescription,
|
||||
.XMLPath = oPropertyPath
|
||||
}
|
||||
oResult.MissingProperties.Add(oMissingProperty)
|
||||
Continue For
|
||||
Else
|
||||
_logger.Debug("oPropertyValue for specification [{0}] is empty or not found. Skipping.", oTableColumn)
|
||||
_logger.Debug("{0} # oPropertyValue for specification [{1}] is empty or not found. Skipping.", MessageId, oPropertyDescription)
|
||||
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
|
||||
If oItemType = Item_Types.MoneyType Then
|
||||
oPropertyValue = GetFormattedDecimalValue(oPropertyValue)
|
||||
End If
|
||||
|
||||
' Statt dem Zahlenwert des Enums, wollen wir die Währungsbezeichnung
|
||||
If oTableColumn = "INVOICE_CURRENCY" Or oItemType = Item_Types.ListType Then
|
||||
Dim oValuestring = oPropertyValue.ToString()
|
||||
|
||||
' Bei Listenelementen entfernen wir den String Item, um den Wert zu erhalten
|
||||
If oValuestring.Contains("Item") Then
|
||||
oValuestring = oValuestring.Replace("Item", "")
|
||||
End If
|
||||
|
||||
oPropertyValue = oValuestring
|
||||
' Statt dem Zahlenwert des Enums, wollen wir die Währunsgbezeichnung
|
||||
If oTableColumn = "INVOICE_CURRENCY" Then
|
||||
oPropertyValue = oPropertyValue.ToString()
|
||||
End If
|
||||
|
||||
oResult.ValidProperties.Add(New ValidProperty() With {
|
||||
@@ -285,175 +233,13 @@ Public Class PropertyValues
|
||||
.TableColumn = oTableColumn,
|
||||
.IsRequired = oIsRequired,
|
||||
.XMLPath = oPropertyPath,
|
||||
.ItemType = oItemType,
|
||||
.EN16931_ID = oEN16931_ID
|
||||
.ItemType = oItemType
|
||||
})
|
||||
Next
|
||||
|
||||
Return oResult
|
||||
End Function
|
||||
|
||||
Private Function GetFormattedDecimalValue(pPropertyValue As Object) As Object
|
||||
' wir versuchen den gefundenen Wert in einen decimal mit 2 Nachommastellen umzuwandeln
|
||||
' Eingaben können mit . oder mit , als Dezimal-Trenner kommen: 19.00 = 19,00
|
||||
|
||||
If IsNothing(pPropertyValue) OrElse String.IsNullOrEmpty(pPropertyValue) Then
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
Try
|
||||
Dim stringValue = pPropertyValue.ToString()
|
||||
|
||||
Dim deCulture As New CultureInfo("de-DE")
|
||||
Dim usCulture As New CultureInfo("en-US")
|
||||
Dim decimalValue As Decimal
|
||||
|
||||
If stringValue.Contains(".") AndAlso Not stringValue.Contains(",") Then
|
||||
' Wir wandeln mit en-US um
|
||||
If Decimal.TryParse(pPropertyValue, NumberStyles.Any, usCulture, decimalValue) Then
|
||||
decimalValue = Math.Round(decimalValue, 2)
|
||||
pPropertyValue = decimalValue.ToString("F2", CultureInfo.InvariantCulture)
|
||||
End If
|
||||
|
||||
ElseIf stringValue.Contains(",") AndAlso Not stringValue.Contains(".") Then
|
||||
' Wir wandeln mit de-DE um, wenn Komma als Trennzeichen enthalten ist
|
||||
If Decimal.TryParse(pPropertyValue, NumberStyles.Any, deCulture, decimalValue) Then
|
||||
decimalValue = Math.Round(decimalValue, 2)
|
||||
pPropertyValue = decimalValue.ToString("F2", CultureInfo.InvariantCulture)
|
||||
End If
|
||||
|
||||
ElseIf Not stringValue.Contains(",") AndAlso Not stringValue.Contains(".") Then
|
||||
' Wir wandeln mit en-US um, wenn KEIN Trennzeichen enthalten ist
|
||||
If Decimal.TryParse(pPropertyValue, NumberStyles.Any, usCulture, decimalValue) Then
|
||||
decimalValue = Math.Round(decimalValue, 2)
|
||||
pPropertyValue = decimalValue.ToString("F2", CultureInfo.InvariantCulture)
|
||||
End If
|
||||
End If
|
||||
|
||||
Return pPropertyValue
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return Nothing
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function CheckRootAttributeValues(pDocument As Object, pPropertyMap As Dictionary(Of String, XmlItemProperty), pMessageId As String, pCheckResult As CheckPropertyValuesResult) As CheckPropertyValuesResult
|
||||
|
||||
If pPropertyMap Is Nothing Then
|
||||
Return pCheckResult
|
||||
End If
|
||||
|
||||
' PropertyMap items with `IsGrouped = False` are handled normally
|
||||
Dim oRootAttributeProperties As Dictionary(Of String, XmlItemProperty) = pPropertyMap.
|
||||
ToDictionary(Function(Item) Item.Key,
|
||||
Function(Item) Item.Value)
|
||||
|
||||
For Each oItem As KeyValuePair(Of String, XmlItemProperty) In oRootAttributeProperties
|
||||
Dim oTableColumn As String = oItem.Value.TableColumn
|
||||
Dim oPropertyDescription As String = oItem.Value.Description
|
||||
Dim oPropertyPath As String = oItem.Value.XMLPath
|
||||
Dim oPropertyValue As Object = Nothing
|
||||
Dim oTableName = oItem.Value.TableName
|
||||
Dim oIsRequired = oItem.Value.IsRequired
|
||||
Dim oDescription = oItem.Value.Description
|
||||
Dim oItemType = oItem.Value.ItemType
|
||||
Dim oEN16931_ID = oItem.Value.EN16931_ID
|
||||
|
||||
Try
|
||||
oPropertyValue = GetRootAttributeValue(pDocument, oItem.Key)
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
oPropertyValue = Nothing
|
||||
End Try
|
||||
|
||||
If IsNothing(oPropertyValue) OrElse String.IsNullOrEmpty(oPropertyValue) Then
|
||||
If oItem.Value.IsRequired Then
|
||||
_logger.Warn("Column [{0}] is empty, but marked as required! Adding MissingProperty.", oTableColumn)
|
||||
Dim oMissingProperty = New MissingProperty With
|
||||
{
|
||||
.EN16931_ID = oEN16931_ID,
|
||||
.Description = oPropertyDescription,
|
||||
.XMLPath = oPropertyPath
|
||||
}
|
||||
pCheckResult.MissingProperties.Add(oMissingProperty)
|
||||
Continue For
|
||||
Else
|
||||
_logger.Debug("oPropertyValue for Column [{0}] is empty or not found. Skipping.", oTableColumn)
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
|
||||
If pDocument.Specification = "EBINTERFACE_61" Then
|
||||
|
||||
' ebInterface DocumentType in UNTDID 1001 — Document type
|
||||
If oTableColumn = "INVOICE_TYPE" Then
|
||||
oPropertyValue = GetUNTDID1001_DocumentType(oPropertyValue)
|
||||
_logger.Debug("oPropertyValue for Column [{0}] in EBINTERFACE_61 with value [{1}] ", oTableColumn, oPropertyValue)
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
pCheckResult.ValidProperties.Add(New ValidProperty() With {
|
||||
.MessageId = pMessageId,
|
||||
.Description = oPropertyDescription,
|
||||
.Value = oPropertyValue,
|
||||
.GroupCounter = 0,
|
||||
.TableName = oTableName,
|
||||
.TableColumn = oTableColumn,
|
||||
.IsRequired = oIsRequired,
|
||||
.XMLPath = oPropertyPath,
|
||||
.ItemType = oItemType,
|
||||
.EN16931_ID = oEN16931_ID
|
||||
})
|
||||
|
||||
Next
|
||||
|
||||
Return pCheckResult
|
||||
End Function
|
||||
|
||||
Private Function GetUNTDID1001_DocumentType(oPropertyValue As String) As String
|
||||
|
||||
Select Case oPropertyValue
|
||||
Case "CreditMemo"
|
||||
Return 381 ' Credit note
|
||||
Case "FinalSettlement"
|
||||
Return 877 ' Final construction invoice
|
||||
Case "Invoice"
|
||||
Return 380 ' Commercial invoice
|
||||
Case "InvoiceForAdvancePayment"
|
||||
Return 386 ' Prepayment invoice
|
||||
Case "InvoiceForPartialDelivery"
|
||||
Return 381 ' Partial invoice
|
||||
Case "SelfBilling"
|
||||
Return 261 ' Self billed credit note
|
||||
Case "SubsequentCredit"
|
||||
Return 83 ' Credit note related to financial adjustments
|
||||
Case "SubsequentDebit"
|
||||
Return 84 ' Debit note related to financial adjustments
|
||||
Case Else
|
||||
Return 0
|
||||
End Select
|
||||
|
||||
End Function
|
||||
|
||||
Private Function GetRootAttributeValue(pDocument As Object, pXmlPath As String) As String
|
||||
If pDocument.XElementObject Is Nothing Then
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
Try
|
||||
Dim attributeName As String = pXmlPath.Replace("root.", "")
|
||||
Dim attributeValue As String = pDocument.XElementObject.Attribute(attributeName).Value
|
||||
Return attributeValue
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return Nothing
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function GetPropValue(Obj As Object, PropertyName As String) As List(Of Object)
|
||||
Dim oNameParts As String() = PropertyName.Split("."c)
|
||||
|
||||
@@ -494,11 +280,17 @@ Public Class PropertyValues
|
||||
|
||||
Obj = oInfo.GetValue(Obj, Nothing)
|
||||
|
||||
' TODO: This code should check for array properties by itself
|
||||
' and should not rely on the user to
|
||||
'If oInfo.PropertyType.IsArray Then
|
||||
' Obj = Obj(0)
|
||||
'End If
|
||||
|
||||
If oHasIndex Then
|
||||
Obj = Obj(0)
|
||||
End If
|
||||
|
||||
If IsArray(Obj) And Not oHasIndex And oPart <> "Value" Then
|
||||
If IsArray(Obj) And Not oHasIndex Then
|
||||
Dim oCurrentPart As String = oPart
|
||||
Dim oSplitString As String() = New String() {oCurrentPart & "."}
|
||||
Dim oPathFragments = PropertyName.Split(oSplitString, StringSplitOptions.None)
|
||||
@@ -518,56 +310,8 @@ Public Class PropertyValues
|
||||
Next
|
||||
|
||||
Return oResults
|
||||
Else
|
||||
If oPart = "Value" AndAlso Obj IsNot Nothing Then
|
||||
' Der Name des gefundenen Datentyps
|
||||
Dim oObjType = oInfo.PropertyType.FullName
|
||||
|
||||
If oObjType.Equals("System.DateTime", StringComparison.OrdinalIgnoreCase) Then
|
||||
|
||||
Dim d As Date
|
||||
Dim s As String
|
||||
Dim oResult As String
|
||||
|
||||
s = Convert.ToString(Obj)
|
||||
|
||||
If IsDate(s) = True Then
|
||||
' Hier wird das DEFAULT-Format auf yyyyMMdd gesetzt
|
||||
Dim dtfi As DateTimeFormatInfo = CultureInfo.CreateSpecificCulture(CultureInfo.InvariantCulture.Name).DateTimeFormat
|
||||
dtfi.DateSeparator = ""
|
||||
dtfi.ShortDatePattern = "yyyyMMdd"
|
||||
|
||||
d = CDate(s)
|
||||
oResult = d.ToString("d", dtfi)
|
||||
|
||||
'Return New List(Of Object) From {oResult}
|
||||
Dim oRetValue As List(Of Object) = New List(Of Object) From {
|
||||
oResult
|
||||
}
|
||||
|
||||
Return oRetValue
|
||||
|
||||
End If
|
||||
ElseIf oObjType.Equals("System.Decimal", StringComparison.OrdinalIgnoreCase) Then
|
||||
|
||||
Dim oResult As String
|
||||
|
||||
If IsNumeric(Obj) = True Then
|
||||
Dim decValue As Decimal = CDec(Obj)
|
||||
' Es wird immer ein . als Dezimaltrenner verwendet, falls nötig
|
||||
oResult = decValue.ToString(CultureInfo.InvariantCulture)
|
||||
|
||||
'Return New List(Of Object) From {oResult}
|
||||
Dim oRetValue As List(Of Object) = New List(Of Object) From {
|
||||
oResult
|
||||
}
|
||||
|
||||
Return oRetValue
|
||||
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
Return New List(Of Object) From {Obj}
|
||||
@@ -595,33 +339,8 @@ Public Class PropertyValues
|
||||
Select Case oCount
|
||||
Case 0
|
||||
Return Nothing
|
||||
Case 1
|
||||
Dim firstElement As Object
|
||||
firstElement = oList.FirstOrDefault()
|
||||
If firstElement IsNot Nothing AndAlso IsArray(firstElement) Then
|
||||
|
||||
Dim oStr As String
|
||||
' Array behandeln -> erstes Element nehmen
|
||||
If TypeOf firstElement Is String() Then
|
||||
Dim arr As String() = CType(firstElement, String())
|
||||
oStr = If(arr.Length > 0, arr(0), String.Empty)
|
||||
Else
|
||||
oStr = firstElement.ToString()
|
||||
End If
|
||||
|
||||
If IsBase64String(oStr) Then
|
||||
' Attachments sind Byte-Arrays und müssen umgewandelt werden
|
||||
Return Convert.ToBase64String(firstElement)
|
||||
Else
|
||||
Return oStr
|
||||
End If
|
||||
|
||||
Else
|
||||
Return DoGetFinalPropValue(oList.First())
|
||||
End If
|
||||
Case Else
|
||||
Return DoGetFinalPropValue(oList.First())
|
||||
|
||||
End Select
|
||||
|
||||
Return DoGetFinalPropValue(Value)
|
||||
@@ -656,40 +375,4 @@ Public Class PropertyValues
|
||||
Return Regex.IsMatch(Prop, _indexPattern)
|
||||
End Function
|
||||
|
||||
Private Function IsComplexeObject(obj As Object) As Boolean
|
||||
If obj Is Nothing Then Return False
|
||||
|
||||
Dim t As Type = obj.GetType()
|
||||
|
||||
' Einfache Typen ausschließen
|
||||
If t.IsPrimitive OrElse
|
||||
t.IsEnum OrElse
|
||||
t Is GetType(String) OrElse
|
||||
t Is GetType(Decimal) OrElse
|
||||
t Is GetType(DateTime) Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
' Wenn es öffentliche Properties hat, ist es "komplex"
|
||||
Return t.GetProperties().Length > 0 OrElse t.IsClass
|
||||
End Function
|
||||
|
||||
Function IsBase64String(str As String) As Boolean
|
||||
If String.IsNullOrEmpty(str) Then Return False
|
||||
|
||||
' Base64 hat bestimmte Zeichen und meist Länge Vielfaches von 4
|
||||
If str.Length Mod 4 <> 0 Then Return False
|
||||
|
||||
' Regex-Check für gültige Base64-Zeichen
|
||||
If Not System.Text.RegularExpressions.Regex.IsMatch(str, "^[A-Za-z0-9+/]*={0,2}$") Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Try
|
||||
Dim bytes As Byte() = Convert.FromBase64String(str)
|
||||
Return True
|
||||
Catch ex As FormatException
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
Public Class RejectionStringRow
|
||||
Public ModuleName As String
|
||||
Public Title As String
|
||||
Public Caption As String
|
||||
Public Language As String
|
||||
Public String1 As String
|
||||
|
||||
End Class
|
||||
@@ -14,7 +14,6 @@ Public Class Validator
|
||||
ValidateDecimalNodes(pResult)
|
||||
ValidateCurrencyNodes(pResult)
|
||||
|
||||
'TODO Validate Datumsfelder
|
||||
Return pResult
|
||||
End Function
|
||||
|
||||
@@ -26,13 +25,11 @@ Public Class Validator
|
||||
For Each oNode As XElement In oDecimalNodes
|
||||
Dim oParsedValue As Decimal = 0.0
|
||||
If Decimal.TryParse(oNode.Value, oParsedValue) = False Then
|
||||
_logger.Warn($"Invalid Decimal Value in {oNode.Name.LocalName}")
|
||||
pResult.ValidationErrors.Add(New ZugferdValidationError() With {
|
||||
.ElementName = oNode.Name.LocalName,
|
||||
.ElementValue = oNode.Value,
|
||||
.ErrorMessage = "Value could not be parsed as Decimal.",
|
||||
.ErrorMessageDE = "Der Wert ist keine Dezimalzahl.",
|
||||
.ErrorMessageToken = "NoDecimalText"
|
||||
.ErrorMessageDE = "Der Wert konnte nicht in eine Dezimalzahl umgewandelt werden."
|
||||
})
|
||||
End If
|
||||
Next
|
||||
@@ -51,14 +48,11 @@ Public Class Validator
|
||||
For Each oNode As XElement In oCurrencyCodeNodes
|
||||
Dim oValid = ValidateCurrencyCode(oNode.Value)
|
||||
If oValid = False Then
|
||||
_logger.Warn($"Invalid CurrencyCode in {oNode.Name.LocalName}")
|
||||
|
||||
pResult.ValidationErrors.Add(New ZugferdValidationError() With {
|
||||
.ElementName = oNode.Name.LocalName,
|
||||
.ElementValue = oNode.Value,
|
||||
.ErrorMessage = "Invalid CurrencyCode. Only 3-Character codes are allowed.",
|
||||
.ErrorMessageDE = "Ungültiger Währungscode. Es sind nur 3-stellige Codes erlaubt.",
|
||||
.ErrorMessageToken = "WrongCurrencyCodeText"
|
||||
.ErrorMessageDE = "Ungültiger Währungscode. Es sind nur 3-stellige Codes erlaubt."
|
||||
})
|
||||
End If
|
||||
Next
|
||||
@@ -81,13 +75,11 @@ Public Class Validator
|
||||
|
||||
Dim oValid = ValidateCurrencyCode(oCurrencyID)
|
||||
If oValid = False Then
|
||||
_logger.Warn($"Invalid CurrencyID in {oNode.Name.LocalName}")
|
||||
pResult.ValidationErrors.Add(New ZugferdValidationError() With {
|
||||
.ElementName = oNode.Name.LocalName,
|
||||
.ElementValue = oCurrencyID,
|
||||
.ErrorMessage = "Invalid currencyID. Only 3-Character codes or empty values are allowed.",
|
||||
.ErrorMessageDE = "Ungültige WährungsID. Es sind nur 3-Zeichen lange Codes oder ein leerer Wert erlaubt.",
|
||||
.ErrorMessageToken = "WrongCurrencyIDText"
|
||||
.ErrorMessageDE = "Ungültige WährungsID. Es sind nur 3-Zeichen lange Codes oder ein leerer Wert erlaubt."
|
||||
})
|
||||
End If
|
||||
Next
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -22,14 +22,7 @@
|
||||
''' 0 = Default / Text
|
||||
''' 1 = Datum
|
||||
''' 2 = Gleitkomma
|
||||
''' 3 = Attachment-Felder
|
||||
''' 4 = Elemente einer Liste, vgl Currency
|
||||
''' 3 = Memo-Feld
|
||||
''' </summary>
|
||||
Public ItemType As Integer
|
||||
|
||||
''' <summary>
|
||||
''' BT-Feld-Bezeichnung
|
||||
''' </summary>
|
||||
Public EN16931_ID As String
|
||||
|
||||
End Class
|
||||
File diff suppressed because it is too large
Load Diff
@@ -12,19 +12,19 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
@@ -32,27 +32,15 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.Pkcs" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Packaging" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.5" newVersion="8.0.0.5" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
@@ -3,36 +3,30 @@
|
||||
<package id="BouncyCastle.Cryptography" version="2.5.0" targetFramework="net462" />
|
||||
<package id="DocumentFormat.OpenXml" version="3.2.0" targetFramework="net462" />
|
||||
<package id="DocumentFormat.OpenXml.Framework" version="3.2.0" targetFramework="net462" />
|
||||
<package id="GdPicture" version="14.4.4" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.4.4" targetFramework="net462" />
|
||||
<package id="Google.Protobuf" version="3.33.2" targetFramework="net462" />
|
||||
<package id="GdPicture" version="14.3.3" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.3.3" targetFramework="net462" />
|
||||
<package id="Microsoft.AspNet.WebApi.Client" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.Cryptography" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.HashCode" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.CSharp" version="4.7.0" targetFramework="net462" />
|
||||
<package id="Microsoft.VisualBasic" version="10.3.0" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json.Bson" version="1.0.2" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="OpenMcdf" version="3.1.4" targetFramework="net462" />
|
||||
<package id="OpenMcdf" version="2.4.1" targetFramework="net462" />
|
||||
<package id="protobuf-net" version="3.2.46" targetFramework="net462" />
|
||||
<package id="protobuf-net.Core" version="3.2.46" targetFramework="net462" />
|
||||
<package id="RtfPipe" version="2.0.7677.4303" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.CodeDom" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Formats.Asn1" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Pipelines" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Management" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Channels" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="8.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -12,7 +12,7 @@ Public Class ADSyncJob
|
||||
MyBase.New(LogConfig, MSSQL)
|
||||
End Sub
|
||||
|
||||
Public Sub Start(Arguments As ADSyncArgs) Implements IJob(Of ADSyncArgs).StartDexAPISQL
|
||||
Public Sub Start(Arguments As ADSyncArgs) Implements IJob(Of ADSyncArgs).Start
|
||||
Dim oJobName As String = [GetType]().Name
|
||||
|
||||
Try
|
||||
|
||||
@@ -5,27 +5,25 @@
|
||||
</startup>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity name="GdPicture.NET.14" publicKeyToken="f52a2e60ad468dbb" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-14.3.9.0" newVersion="14.3.9.0" />
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||
@@ -37,35 +35,15 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.Pkcs" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Packaging" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="GdPicture.NET.14.Common" publicKeyToken="f52a2e60ad468dbb" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-14.4.4.0" newVersion="14.4.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="GdPicture.NET.14" publicKeyToken="f52a2e60ad468dbb" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-14.4.4.0" newVersion="14.4.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.5" newVersion="8.0.0.5" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
Public Class APISQLArgs
|
||||
Inherits JobArgs
|
||||
Public ProfileID As String
|
||||
End Class
|
||||
@@ -1,6 +0,0 @@
|
||||
Public Class APISQLConfig
|
||||
Public Property BaseUrl As String = ""
|
||||
Public Property Property1 As String = ""
|
||||
Public Property Property2 As String = ""
|
||||
Public Property Property3 As String = ""
|
||||
End Class
|
||||
@@ -1,35 +0,0 @@
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Data
|
||||
Imports System.Threading.Tasks
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Interfaces
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
Public Class API_DEXSQLJob
|
||||
Inherits JobBase
|
||||
Implements IJob(Of APISQLArgs)
|
||||
|
||||
Public Sub New(LogConfig As LogConfig, MSSQL As MSSQLServer)
|
||||
MyBase.New(LogConfig, MSSQL)
|
||||
End Sub
|
||||
|
||||
Public Sub StartDexAPISQL(Arguments As APISQLArgs) Implements IJob(Of APISQLArgs).StartDexAPISQL
|
||||
Dim oJobName As String = [GetType]().Name
|
||||
|
||||
Try
|
||||
_Logger.Info("Running job {0}", oJobName)
|
||||
|
||||
|
||||
_Logger.Info("Job {0} completed!", oJobName)
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("Job {0} failed!", oJobName)
|
||||
_Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Function ShouldStart(Arguments As APISQLArgs) As Boolean Implements IJob(Of APISQLArgs).ShouldStart
|
||||
Return Arguments.Enabled
|
||||
End Function
|
||||
|
||||
|
||||
End Class
|
||||
@@ -21,7 +21,7 @@ Public Class GraphQLJob
|
||||
MyBase.New(LogConfig, MSSQL)
|
||||
End Sub
|
||||
|
||||
Public Sub Start(Args As GraphQLArgs) Implements IJob(Of GraphQLArgs).StartDexAPISQL
|
||||
Public Sub Start(Args As GraphQLArgs) Implements IJob(Of GraphQLArgs).Start
|
||||
Try
|
||||
Dim oConfigPath As String = Args.QueryConfigPath
|
||||
Dim oConfigManager As New ConfigManager(Of GraphQLConfig)(_LogConfig, oConfigPath)
|
||||
|
||||
@@ -17,6 +17,5 @@ Public Class JobConfig
|
||||
ADSync
|
||||
GraphQL
|
||||
Test
|
||||
API_SQL
|
||||
End Enum
|
||||
End Class
|
||||
@@ -3,7 +3,7 @@
|
||||
End Interface
|
||||
|
||||
Public Interface IJob(Of T)
|
||||
Sub StartDexAPISQL(Arguments As T)
|
||||
Sub Start(Arguments As T)
|
||||
|
||||
Function ShouldStart(Arguments As T) As Boolean
|
||||
End Interface
|
||||
|
||||
200
Jobs/Jobs.vbproj
200
Jobs/Jobs.vbproj
@@ -66,12 +66,19 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Interfaces\Interfaces.vbproj">
|
||||
<Project>{ab6f09bf-e794-4f6a-94bb-c97c0ba84d64}</Project>
|
||||
<Name>Interfaces</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ADSync\ADSyncArgs.vb" />
|
||||
<Compile Include="ADSync\ADSyncJob.vb" />
|
||||
<Compile Include="DEX_API\APISQLArgs.vb" />
|
||||
<Compile Include="DEX_API\APISQLConfig.vb" />
|
||||
<Compile Include="DEX_API\API_DEXSQLJob.vb" />
|
||||
<Compile Include="GraphQL\GraphQLArgs.vb" />
|
||||
<Compile Include="GraphQL\GraphQLConfig.vb" />
|
||||
<Compile Include="GraphQL\GraphQLJob.vb" />
|
||||
@@ -106,21 +113,18 @@
|
||||
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\BouncyCastle.Cryptography.2.5.0\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Base">
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.9.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Config">
|
||||
<Reference Include="DigitalData.Modules.Config, Version=1.3.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Interfaces">
|
||||
<HintPath>..\Interfaces\bin\Debug\DigitalData.Modules.Interfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DocumentFormat.OpenXml, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DocumentFormat.OpenXml.3.2.0\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -130,95 +134,74 @@
|
||||
<Reference Include="FirebirdSql.Data.FirebirdClient, Version=7.5.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Markdown, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Markdown.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.wia.gateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6973b5c22dcf45f7, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Google.Protobuf, Version=3.33.2.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.33.2\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.5\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.Cryptography, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.Cryptography.10.0.5\lib\net462\Microsoft.Bcl.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.HashCode.6.0.0\lib\net462\Microsoft.Bcl.HashCode.dll</HintPath>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NativeSDK.Exceptions, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Exceptions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings.Edition, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.Edition.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -228,8 +211,8 @@
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenMcdf, Version=3.1.4.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.3.1.4\lib\netstandard2.0\OpenMcdf.dll</HintPath>
|
||||
<Reference Include="OpenMcdf, Version=2.4.1.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.2.4.1\lib\net40\OpenMcdf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="protobuf-net, Version=3.0.0.0, Culture=neutral, PublicKeyToken=257b51d87d2e4d67, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\protobuf-net.3.2.46\lib\net462\protobuf-net.dll</HintPath>
|
||||
@@ -241,82 +224,69 @@
|
||||
<HintPath>..\packages\RtfPipe.2.0.7677.4303\lib\net45\RtfPipe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
|
||||
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.CodeDom.8.0.0\lib\net462\System.CodeDom.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Collections.Immutable, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.10.0.5\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
<Reference Include="System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Formats.Asn1, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Asn1.10.0.5\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.IO.Packaging, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.10.0.5\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Pipelines, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Pipelines.10.0.5\lib\net462\System.IO.Pipelines.dll</HintPath>
|
||||
<Reference Include="System.IO.Packaging, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.8.0.1\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
|
||||
<Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Net.Http.Formatting, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.6.0.0\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.10.0.5\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.8.0.1\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.10.0.5\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.10.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
<Reference Include="System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.8.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Channels, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Channels.10.0.5\lib\net462\System.Threading.Channels.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.6.1\lib\net462\System.ValueTuple.dll</HintPath>
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.XML.Linq" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="logParser.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Digital Data")>
|
||||
<Assembly: AssemblyProduct("Modules.Jobs")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("3.9.0.0")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("2.9.3.0")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -30,5 +30,5 @@ Imports System.Runtime.InteropServices
|
||||
' Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
|
||||
<Assembly: AssemblyVersion("3.9.0.0")>
|
||||
<Assembly: AssemblyFileVersion("3.9.0.0")>
|
||||
<Assembly: AssemblyVersion("2.9.4.0")>
|
||||
<Assembly: AssemblyFileVersion("2.9.4.0")>
|
||||
|
||||
@@ -48,7 +48,7 @@ Namespace ZUGFeRD
|
||||
Dim intCode As Integer = DirectCast(pErrorCode, Integer)
|
||||
oErrorCode = $"{EmailStrings.ErrorCodePraefix}{intCode}"
|
||||
|
||||
Dim oSQL = $"SELECT COUNT(*) FROM TBDD_GUI_LANGUAGE_PHRASE WITH (NOLOCK) WHERE TITLE = '{oErrorCode}'"
|
||||
Dim oSQL = $"SELECT COUNT(*) FROM TBDD_GUI_LANGUAGE_PHRASE WHERE TITLE = '{oErrorCode}'"
|
||||
If _mssql.GetScalarValue(oSQL) > 0 Then
|
||||
useLegacyMethod = False
|
||||
Else
|
||||
@@ -59,7 +59,7 @@ Namespace ZUGFeRD
|
||||
' Gibt es das Template in TBDD_EMAIL_TEMPLATE?
|
||||
If useLegacyMethod = False AndAlso pTemplateId > 0 Then
|
||||
Try
|
||||
Dim oSQL = $"SELECT COUNT(*) FROM TBDD_EMAIL_TEMPLATE WITH (NOLOCK) WHERE GUID = {pTemplateId}"
|
||||
Dim oSQL = $"SELECT COUNT(*) FROM TBDD_EMAIL_TEMPLATE WHERE GUID = {pTemplateId}"
|
||||
If _mssql.GetScalarValue(oSQL) <= 0 Then
|
||||
_logger.Warn($"EMAIL_TEMPLATE [{pTemplateId}] not found in TBDD_EMAIL_TEMPLATE!")
|
||||
useLegacyMethod = True
|
||||
@@ -137,11 +137,7 @@ Namespace ZUGFeRD
|
||||
, '{pParameter2}'
|
||||
, 77"
|
||||
|
||||
If pTransaction IsNot Nothing Then
|
||||
_mssql.ExecuteNonQuery(oExecute, pTransaction)
|
||||
Else
|
||||
_mssql.ExecuteNonQuery(oExecute)
|
||||
End If
|
||||
_mssql.ExecuteNonQuery(oExecute, pTransaction)
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
@@ -189,7 +185,7 @@ Namespace ZUGFeRD
|
||||
_logger.Debug("To: {0}", oEmailTo)
|
||||
_logger.Debug("Subject: {0}", oSubject)
|
||||
_logger.Debug("Body {0}", oFinalBodyText)
|
||||
Dim osql = $"Select MAX(GUID) FROM TBEMLP_HISTORY WITH (NOLOCK) WHERE EMAIL_MSGID = '{MessageId}'"
|
||||
Dim osql = $"Select MAX(GUID) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{MessageId}'"
|
||||
Dim oHistoryID = _mssql.GetScalarValue(osql)
|
||||
|
||||
If IsNumeric(oHistoryID) Then
|
||||
@@ -227,7 +223,7 @@ Namespace ZUGFeRD
|
||||
End Sub
|
||||
|
||||
Public Function GetEmailDataForMessageId(MessageId As String) As EmailData
|
||||
Dim oSQL = $"SELECT EMAIL_FROM, EMAIL_SUBJECT FROM TBEMLP_HISTORY WITH (NOLOCK) WHERE EMAIL_MSGID = '{MessageId}'"
|
||||
Dim oSQL = $"SELECT EMAIL_FROM, EMAIL_SUBJECT FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{MessageId}'"
|
||||
Try
|
||||
Dim oDatatable = _mssql.GetDatatable(oSQL)
|
||||
Dim oRow As DataRow
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
FileSizeLimitReachedException = 20008
|
||||
OutOfMemoryException = 20009
|
||||
UnhandledException = 20010
|
||||
FileMoveException = 20011
|
||||
FileMoveException = 200011
|
||||
End Enum
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Globalization
|
||||
Imports System.IO
|
||||
Imports System.Linq
|
||||
Imports System.Text
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Interfaces
|
||||
@@ -93,8 +91,7 @@ Namespace ZUGFeRD
|
||||
' Write Embedded Files to disk
|
||||
For Each oResult In pEmbeddedAttachments
|
||||
Try
|
||||
Dim oCleanedFilename As String = BereinigeDateinamenAscii(oResult.FileName)
|
||||
Dim oFileName As String = $"{pMessageId}~{oCleanedFilename}"
|
||||
Dim oFileName As String = $"{pMessageId}~{oResult.FileName}"
|
||||
Dim oFilePath As String = Path.Combine(oAttachmentDirectory, oFileName)
|
||||
|
||||
If Not File.Exists(oAttachmentDirectory) Then
|
||||
@@ -211,7 +208,6 @@ Namespace ZUGFeRD
|
||||
Return False ' Andere Fehler
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function GetEmailPathWithSubjectAsName(RejectedEmailDirectory As String, UncleanedSubject As String) As String
|
||||
Dim oCleanSubject = String.Join("", UncleanedSubject.Split(Path.GetInvalidPathChars()))
|
||||
Dim oAttachmentDirectory = RejectedEmailDirectory
|
||||
@@ -222,41 +218,6 @@ Namespace ZUGFeRD
|
||||
|
||||
Return oAttachmentPath
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 20.8.2026 - In den Dateinamen der Anhänge in einem PDF können Unicode-Zeichen vorkommen
|
||||
''' die später nicht mehr verarbeitet werden können. sie werden hier rausgefiltert
|
||||
''' </summary>
|
||||
''' <param name="pFilename"></param>
|
||||
''' <returns></returns>
|
||||
Function BereinigeDateinamenAscii(pFilename As String) As String
|
||||
If pFilename.IsNullOrEmpty() Then
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
' Restliche Diakritika entfernen (é, à, ñ, etc.)
|
||||
Dim normalisiert As String = pFilename.Normalize(NormalizationForm.FormD)
|
||||
Dim sb As New StringBuilder()
|
||||
|
||||
For Each c As Char In normalisiert
|
||||
If CharUnicodeInfo.GetUnicodeCategory(c) = UnicodeCategory.NonSpacingMark Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim code As Integer = AscW(c)
|
||||
|
||||
If code >= 32 AndAlso code <= 126 Then
|
||||
If "\/:*?""<>|".Contains(c) Then
|
||||
sb.Append("_")
|
||||
Else
|
||||
sb.Append(c)
|
||||
End If
|
||||
End If
|
||||
' Alles andere (z.B. 你好) wird komplett verworfen
|
||||
Next
|
||||
|
||||
Return sb.ToString()
|
||||
End Function
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
|
||||
@@ -33,7 +33,12 @@ Public Class HashFunctions
|
||||
End If
|
||||
|
||||
' Check if Checksum exists in History Table
|
||||
Dim oCheckCommand = $"SELECT * FROM TBEMLP_HISTORY WITH (NOLOCK) WHERE GUID = (SELECT MAX(GUID) FROM TBEMLP_HISTORY WITH (NOLOCK) WHERE UPPER(MD5HASH) = UPPER('{oMD5CheckSum}'))"
|
||||
'Dim oCheckCommand = $"SELECT * FROM TBEDM_ZUGFERD_HISTORY_IN WHERE GUID = (SELECT MAX(GUID) FROM TBEDM_ZUGFERD_HISTORY_IN WHERE UPPER(MD5HASH) = UPPER('{oMD5CheckSum}'))"
|
||||
'Dim oTable As DataTable = _firebird.GetDatatable(oCheckCommand, Firebird.TransactionMode.NoTransaction)
|
||||
|
||||
' Check if Checksum exists in History Table
|
||||
' TODO: WHAT THE FUCK IS THIS
|
||||
Dim oCheckCommand = $"SELECT * FROM TBEMLP_HISTORY WHERE GUID = (SELECT MAX(GUID) FROM TBEMLP_HISTORY WHERE UPPER(MD5HASH) = UPPER('{oMD5CheckSum}'))"
|
||||
Dim oTable As DataTable = Database.GetDatatable(oCheckCommand, MSSQLServer.TransactionMode.NoTransaction)
|
||||
|
||||
' If History entries could not be fetched, just return the MD5 Checksum
|
||||
@@ -94,7 +99,7 @@ Public Class HashFunctions
|
||||
Public Function GetOriginalFilename(pFilename As String) As String
|
||||
' Try to get the original filename from Attachment table
|
||||
' If this fails, falls back to the new filename (<msgid>~Attm<i>.ext)
|
||||
Dim oSQL = $"SELECT EMAIL_ATTMT FROM TBEMLP_HISTORY_ATTACHMENT WITH (NOLOCK) WHERE EMAIL_ATTMT_INDEX = '{pFilename}'"
|
||||
Dim oSQL = $"SELECT EMAIL_ATTMT FROM TBEMLP_HISTORY_ATTACHMENT WHERE EMAIL_ATTMT_INDEX = '{pFilename}'"
|
||||
Dim oEmailAttachment = Database.GetScalarValue(oSQL, MSSQLServer.TransactionMode.NoTransaction)
|
||||
Dim oOriginalName = ObjectEx.NotNull(oEmailAttachment, pFilename)
|
||||
Return oOriginalName
|
||||
|
||||
@@ -11,7 +11,6 @@ Imports DigitalData.Modules.Interfaces.Exceptions
|
||||
Imports DigitalData.Modules.Interfaces.PropertyValues
|
||||
Imports DigitalData.Modules.Jobs.Exceptions
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports GdPicture14
|
||||
|
||||
Public Class ImportZUGFeRDFiles
|
||||
Implements IJob
|
||||
@@ -28,35 +27,10 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Private Const DIRECTORY_DONT_MOVE = "DIRECTORY_DONT_MOVE"
|
||||
|
||||
Private Const MIME_TYPE_PDF = "application/pdf"
|
||||
Private Const MIME_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||
Private Const MIME_TYPE_ODT = "application/vnd.oasis.opendocument.spreadsheet"
|
||||
|
||||
' List of allowed extensions for PDF/A Attachments
|
||||
' This list should not contain xml so the zugferd xml file will be filtered out
|
||||
Private ReadOnly AllowedExtensions As New List(Of String) From {"docx", "doc", "pdf", "xls", "xlsx", "ppt", "pptx", "txt"}
|
||||
|
||||
' List of the Columns we need to store embedded files on disk and database
|
||||
Private ReadOnly EmbeddedFilesColumnNames As List(Of String) = New List(Of String) From {
|
||||
"ATTACHMENT_FILE_FILENAME", "ATTACHMENT_FILE_VALUE", "ATTACHMENT_FILE_MIMECODE"
|
||||
}
|
||||
|
||||
' List of the allowed MIME-Codes
|
||||
' Allowed Values are:
|
||||
'- application/pdf
|
||||
'- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx)
|
||||
'- application/vnd.oasis.opendocument.spreadsheet (odt)
|
||||
'- image/jpeg
|
||||
'- image/png
|
||||
'- image/tiff (UBL)
|
||||
'- text/csv
|
||||
'- text/xml (UBL)
|
||||
Private ReadOnly AllowedMimeTypesInEmbeddedFiles As List(Of String) = New List(Of String) From {
|
||||
MIME_TYPE_PDF,
|
||||
MIME_TYPE_XLSX,
|
||||
MIME_TYPE_ODT
|
||||
}
|
||||
|
||||
Private ReadOnly _logger As Logger
|
||||
Private ReadOnly _logConfig As LogConfig
|
||||
Private ReadOnly _filesystem As FilesystemEx
|
||||
@@ -68,7 +42,6 @@ Public Class ImportZUGFeRDFiles
|
||||
Private ReadOnly _embeds As PDFEmbeds
|
||||
|
||||
Private SQL_xRechnung_ItemTemplate As String = ""
|
||||
Private SQL_ebInterface_CompleteXMLItems As String = ""
|
||||
|
||||
Private ReadOnly _gdpictureLicenseKey As String
|
||||
Private ReadOnly _xRechnungCreator As XRechnungViewDocument
|
||||
@@ -82,8 +55,6 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Public ZugferdFileCount As Integer = 0
|
||||
Public MD5Checksum As String = Nothing
|
||||
Public XMLSpecification As String = Nothing
|
||||
Public XMLSchema As String = Nothing
|
||||
|
||||
Public EmailAttachmentFiles As New List(Of FileInfo)
|
||||
Public EmbeddedAttachmentFiles As New List(Of PDFEmbeds.EmbeddedFile)
|
||||
@@ -117,28 +88,22 @@ Public Class ImportZUGFeRDFiles
|
||||
Public Sub Start(Arguments As Object) Implements IJob.Start
|
||||
Dim oArgs As WorkerArgs = Arguments
|
||||
Dim oAttachmentExtractor = New PDFEmbeds(_logConfig)
|
||||
Dim oSpecification As String = String.Empty
|
||||
|
||||
_EmailOutAccountId = oArgs.EmailOutProfileId
|
||||
|
||||
_zugferd = New ZUGFeRDInterface(_logConfig, _gdpictureLicenseKey, New ZUGFeRDInterface.ZugferdOptions() With {
|
||||
.AllowFacturX_Filename = oArgs.AllowFacturX,
|
||||
.AllowXRechnung_Filename = oArgs.AllowXRechnung,
|
||||
.AllowPeppol_3_x_Schema = oArgs.AllowPeppolBISBill3x,
|
||||
.AllowEBInterface_Schema = oArgs.AllowEBInterface
|
||||
.AllowPeppol_3_x_Schema = oArgs.AllowPeppolBISBill3x
|
||||
})
|
||||
|
||||
_logger.Debug("Starting Job {0}", [GetType].Name)
|
||||
If oArgs.AllowXRechnung Or oArgs.AllowPeppolBISBill3x Or oArgs.AllowEBInterface Then
|
||||
Dim oSQL = "SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WITH (NOLOCK) WHERE TITLE = 'VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS'"
|
||||
If oArgs.AllowXRechnung Then
|
||||
' TODO - Config-Schalter hat NIX mit XRechnung-Dateien u. Sichtbelegen zu tun, sondern nur mit Dateinamen zu tun.
|
||||
Dim oSQL = "SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WHERE TITLE = 'VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS'"
|
||||
SQL_xRechnung_ItemTemplate = _mssql.GetScalarValue(oSQL)
|
||||
End If
|
||||
|
||||
If oArgs.AllowEBInterface Then
|
||||
Dim oSQL = "SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WITH (NOLOCK) WHERE TITLE = 'EBINTERFACE_COMPLETE_MISSING_XML_ITEMS'"
|
||||
SQL_ebInterface_CompleteXMLItems = _mssql.GetScalarValue(oSQL)
|
||||
End If
|
||||
|
||||
Try
|
||||
'For Each oPath As String In oArgs.WatchDirectory
|
||||
Dim oPath As String = oArgs.WatchDirectory
|
||||
@@ -175,6 +140,8 @@ Public Class ImportZUGFeRDFiles
|
||||
' Start a new transaction for each file group.
|
||||
' This way we can rollback database changes for the whole filegroup in case something goes wrong.
|
||||
Dim oSQLConnection As SqlConnection = _mssql.GetConnection()
|
||||
|
||||
|
||||
Dim oSQLTransaction As SqlTransaction = oSQLConnection?.BeginTransaction()
|
||||
|
||||
Dim oConnections As New DatabaseConnections() With {
|
||||
@@ -217,7 +184,6 @@ Public Class ImportZUGFeRDFiles
|
||||
Try
|
||||
|
||||
For Each oFile In oEInvoiceFileGroup
|
||||
oSpecification = String.Empty
|
||||
oFileCounter += 1
|
||||
Dim oResult As ProcessFileResult
|
||||
|
||||
@@ -228,10 +194,9 @@ Public Class ImportZUGFeRDFiles
|
||||
End If
|
||||
|
||||
If oResult.ZugferdFileFound = True Then
|
||||
_logger.Debug("eInvoice File found")
|
||||
_logger.Debug("Zugferd File found")
|
||||
oMD5CheckSum = oResult.MD5Checksum
|
||||
oZUGFeRDCount = oResult.ZugferdFileCount
|
||||
oSpecification = oResult.XMLSpecification
|
||||
oEmailAttachmentFiles.AddRange(oResult.EmailAttachmentFiles)
|
||||
oEmbeddedAttachmentFiles.AddRange(oResult.EmbeddedAttachmentFiles)
|
||||
Else ' No zugferd found!
|
||||
@@ -346,7 +311,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = String.Format(EmailStrings.EMAIL_TOO_MUCH_FERDS, oEmailData.Subject)
|
||||
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "TooMuchFerdsException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.TooMuchFerdsException, "", "")
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt mehr als ein eInvoice-Dokument", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt mehr als ein ZUGFeRD-Dokument", "", oSQLTransaction)
|
||||
|
||||
Catch ex As NoFerdsException
|
||||
_logger.Error(ex)
|
||||
@@ -359,7 +324,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = String.Format(EmailStrings.EMAIL_NO_FERDS, oEmailData.Subject)
|
||||
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "NoFerdsException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.NoFerdsException, "", "")
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt keine eInvoice-Dokumente", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction)
|
||||
|
||||
Catch ex As MissingValueException
|
||||
_logger.Error(ex)
|
||||
@@ -378,7 +343,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId)
|
||||
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "MissingValueException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.MissingValueException, oOrgFilename, oMissingFieldList)
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Es fehlten eInvoice-Spezifikationen", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Es fehlten ZugferdSpezifikationen", "", oSQLTransaction)
|
||||
|
||||
Catch ex As FileSizeLimitReachedException
|
||||
_logger.Error(ex)
|
||||
@@ -411,7 +376,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = _email.CreateBodyForUnhandledException(oMessageId, ex)
|
||||
Dim oEmailData As New EmailData With {
|
||||
.From = oArgs.ExceptionEmailAddress,
|
||||
.Subject = $"OutOfMemoryException im eInvoice-Parser @ {oMessageId}"
|
||||
.Subject = $"OutOfMemoryException im ZUGFeRD-Parser @ {oMessageId}"
|
||||
}
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "OutOfMemoryException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.UnhandledException, ex.Message, ex.StackTrace)
|
||||
|
||||
@@ -434,7 +399,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = _email.CreateBodyForUnhandledException(oMessageId, ex)
|
||||
Dim oEmailData As New EmailData With {
|
||||
.From = oArgs.ExceptionEmailAddress,
|
||||
.Subject = $"UnhandledException im eInvoice-Parser @ {oMessageId}"
|
||||
.Subject = $"UnhandledException im ZUGFeRD-Parser @ {oMessageId}"
|
||||
}
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "UnhandledException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.UnhandledException, ex.Message, ex.StackTrace)
|
||||
|
||||
@@ -450,34 +415,20 @@ Public Class ImportZUGFeRDFiles
|
||||
If oMoveDirectory = DIRECTORY_DONT_MOVE Then
|
||||
_logger.Info("Application Error occurred. Files for message Id {0} will not be moved.", oMessageId)
|
||||
|
||||
ElseIf (oArgs.AllowXRechnung Or oArgs.AllowPeppolBISBill3x Or oArgs.AllowEBInterface) And oIsSuccess And
|
||||
oEInvoiceFileGroup.Item(0).Extension.Equals(".xml", StringComparison.OrdinalIgnoreCase) = True Then
|
||||
ElseIf oArgs.AllowXRechnung And oIsSuccess And oEInvoiceFileGroup.Item(0).Extension = ".xml" Then
|
||||
_logger.Debug("Before Creating the PDF-File from XML data / Before Commit")
|
||||
|
||||
oxRechnungHandle = True
|
||||
|
||||
If oSQLTransaction IsNot Nothing Then
|
||||
' Commit Transaction - muss ausgeführt werden, sonst sind keine Daten in der DB vorhanden
|
||||
oSQLTransaction.Commit()
|
||||
_logger.Debug("XML commit triggered")
|
||||
End If
|
||||
|
||||
' Vor der Sichtbeleg-Erzeugung, müssen ggf Daten nachberechnet werden.
|
||||
' Hier wird die Prozedur für EBINTERFACE_61 aufgerufen, falls der Beleg dieses Schema verwendet
|
||||
If oArgs.AllowEBInterface AndAlso
|
||||
String.Equals(oSpecification, "EBINTERFACE_61", StringComparison.InvariantCultureIgnoreCase) AndAlso
|
||||
Not String.IsNullOrEmpty(SQL_ebInterface_CompleteXMLItems) Then
|
||||
_logger.Debug("Before Calling ebInterface Procedure")
|
||||
Dim oSQL_MsgIDReplace_1 As String = SQL_ebInterface_CompleteXMLItems.Replace("@MSG_ID", oFileGroup.Key)
|
||||
Dim oSqlResult = _mssql.ExecuteNonQuery(oSQL_MsgIDReplace_1)
|
||||
_logger.Debug("Result of ebInterface Procedure: [{0}]", oSqlResult)
|
||||
End If
|
||||
|
||||
' Hier das neue PDF erzeugen
|
||||
'but before we need to get all Data we need
|
||||
MyTemplateValues_xInvDT = Nothing
|
||||
Dim oSQL_MsgIDReplace = SQL_xRechnung_ItemTemplate
|
||||
oSQL_MsgIDReplace = oSQL_MsgIDReplace.Replace("@MSG_ID", oFileGroup.Key)
|
||||
If oSQLTransaction IsNot Nothing Then
|
||||
' Commit Transaction
|
||||
oSQLTransaction.Commit()
|
||||
_logger.Debug("XML commit triggered")
|
||||
End If
|
||||
MyTemplateValues_xInvDT = _mssql.GetDatatable(oSQL_MsgIDReplace)
|
||||
|
||||
If Not IsNothing(MyTemplateValues_xInvDT) Then
|
||||
@@ -504,7 +455,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = _email.CreateBodyForUnhandledException(oMessageId, ex)
|
||||
Dim oEmailData As New EmailData With {
|
||||
.From = oArgs.ExceptionEmailAddress,
|
||||
.Subject = $"FileMoveException im eInvoice-Parser @ {oMessageId}"
|
||||
.Subject = $"FileMoveException im ZUGFeRD-Parser @ {oMessageId}"
|
||||
}
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "FileMoveException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.UnhandledException, ex.Message, ex.StackTrace)
|
||||
|
||||
@@ -583,48 +534,36 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Try
|
||||
oDocument = _zugferd.GetSerializedXMLContentFromFile(pFile)
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_XML
|
||||
|
||||
Catch ex As ValidationException
|
||||
Throw ex
|
||||
|
||||
Catch ex As ZUGFeRDExecption
|
||||
Select Case ex.ErrorType
|
||||
Case ZUGFeRDInterface.ErrorType.NoZugferd
|
||||
_logger.Info("File [{0}] is not a valid ZUGFeRD document. Skipping.", pFile.Name)
|
||||
|
||||
If ex.ErrorCode > 0 Then
|
||||
_logger.Info("New Rejection Logik")
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
|
||||
Select Case ex.ErrorCode
|
||||
Case ErrorCode.NoFerdsException
|
||||
_logger.Info("File [{0}] is not a valid eInvoice document. Skipping.", pFile.Name)
|
||||
Case ZUGFeRDInterface.ErrorType.UnsupportedFormat
|
||||
_logger.Info("File [{0}/{1}] is an unsupported ZUFeRD document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
Case ZUGFeRDInterface.ErrorType.NoValidZugferd
|
||||
_logger.Info("File [{0}] is an Incorrectly formatted ZUGFeRD document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
|
||||
Case ErrorCode.UnsupportedFerdException
|
||||
_logger.Info("File [{0}/{1}] is an unsupported eInvoice document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting ZUGFeRD Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
End Select
|
||||
|
||||
Case ErrorCode.InvalidFerdException
|
||||
_logger.Info("File [{0}] is an incorrectly formatted eInvoice document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting eInvoice Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
|
||||
End Select
|
||||
End If
|
||||
End Try
|
||||
|
||||
Try
|
||||
Dim sqlResult As Boolean = False
|
||||
|
||||
If oDocument IsNot Nothing Then
|
||||
sqlResult = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs, oResult)
|
||||
oResult.XMLSpecification = oDocument.Specification
|
||||
oResult.XMLSchema = oDocument.UsedXMLSchema
|
||||
End If
|
||||
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_XML
|
||||
Dim sqlResult As Boolean = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs)
|
||||
Catch ex As Exception
|
||||
Throw ex
|
||||
End Try
|
||||
@@ -667,37 +606,30 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Try
|
||||
oDocument = _zugferd.ExtractZUGFeRDFileWithGDPicture(pFile.FullName)
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_PDF
|
||||
|
||||
Catch ex As ValidationException
|
||||
Throw ex
|
||||
|
||||
Catch ex As ZUGFeRDExecption
|
||||
If ex.ErrorCode > 0 Then
|
||||
_logger.Info("New Rejection Logik")
|
||||
Select Case ex.ErrorType
|
||||
Case ZUGFeRDInterface.ErrorType.NoZugferd
|
||||
_logger.Info("File [{0}] is not a valid ZUGFeRD document. Skipping.", pFile.Name)
|
||||
|
||||
Select Case ex.ErrorCode
|
||||
Case ErrorCode.NoFerdsException
|
||||
_logger.Info("File [{0}] is not a valid eInvoice document. Skipping.", pFile.Name)
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
Case ZUGFeRDInterface.ErrorType.UnsupportedFormat
|
||||
_logger.Info("File [{0}/{1}] is an unsupported ZUFeRD document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
|
||||
Case ErrorCode.UnsupportedFerdException
|
||||
_logger.Info("File [{0}/{1}] is an unsupported eInvoice document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
|
||||
Case ErrorCode.InvalidFerdException
|
||||
_logger.Info("File [{0}] is an incorrectly formatted eInvoice document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting eInvoice Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
|
||||
End Select
|
||||
End If
|
||||
Case ZUGFeRDInterface.ErrorType.NoValidZugferd
|
||||
_logger.Info("File [{0}] is an Incorrectly formatted ZUGFeRD document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting ZUGFeRD Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
End Select
|
||||
End Try
|
||||
|
||||
' Check if there are more than one ZUGFeRD files
|
||||
@@ -720,7 +652,8 @@ Public Class ImportZUGFeRDFiles
|
||||
End If
|
||||
|
||||
Try
|
||||
Dim sqlResult As Boolean = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs, oResult)
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_PDF
|
||||
Dim sqlResult As Boolean = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs)
|
||||
Catch ex As Exception
|
||||
Throw ex
|
||||
End Try
|
||||
@@ -737,18 +670,14 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
End Function
|
||||
|
||||
Private Function StoreXMLItemsInDatabase(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pFile As FileInfo, pConnections As DatabaseConnections, pArgs As WorkerArgs, pProcessFileResult As ProcessFileResult) As Boolean
|
||||
Private Function StoreXMLItemsInDatabase(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pFile As FileInfo, pConnections As DatabaseConnections, pArgs As WorkerArgs) As Boolean
|
||||
' Check the document against the configured property map and return:
|
||||
' - a List of valid properties
|
||||
' - a List of missing properties
|
||||
|
||||
Dim oPropertyMap As Dictionary(Of String, XmlItemProperty) = _zugferd.FilterPropertyMap(pArgs.PropertyMapList, pDocument.Specification)
|
||||
Dim oPropertyMap = _zugferd.FilterPropertyMap(pArgs.PropertyMap, pDocument.Specification)
|
||||
Dim oCheckResult = _zugferd.PropertyValues.CheckPropertyValues(pDocument.SchemaObject, oPropertyMap, pMessageId)
|
||||
|
||||
' root-Attribute falls konfiguriert auslesen, Ergebnis im oCheckResult enthalten
|
||||
Dim oRootAttributePropertyMap As Dictionary(Of String, XmlItemProperty) = _zugferd.FilterRootPropertyMap(pArgs.PropertyMapList, pDocument.Specification)
|
||||
oCheckResult = _zugferd.PropertyValues.CheckRootAttributeValues(pDocument, oRootAttributePropertyMap, pMessageId, oCheckResult)
|
||||
|
||||
_logger.Info("Properties checked: [{0}] missing properties / [{1}] valid properties found.", oCheckResult.MissingProperties.Count, oCheckResult.ValidProperties.Count)
|
||||
|
||||
If oCheckResult.MissingProperties.Count > 0 Then
|
||||
@@ -764,359 +693,39 @@ Public Class ImportZUGFeRDFiles
|
||||
Throw New Exception("Bulk Insert failed! Exiting.")
|
||||
End If
|
||||
|
||||
' TODO hier BAUSTELLE
|
||||
' Eingebettete Dateien speichern
|
||||
If HandleEmbeddedAttachments(pMessageId, pDocument, pConnections, oCheckResult, pArgs, pProcessFileResult) = False Then
|
||||
_logger.Debug("Files saving for MessageId [{0}] failed!", pMessageId)
|
||||
End If
|
||||
'If CreateEmbeddedFilesOnDisk(pMessageId, pDocument, pConnections, oCheckResult) = False Then
|
||||
' _logger.Debug("Files saving for MessageId [{0}] failed!", pMessageId)
|
||||
'End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Hier werden die Dateianhänge behandelt, die im XML als base64 eingetragen wurden.
|
||||
''' Die zusammengehörigen Knoten müssen über "FILES" gruppiert werden!
|
||||
'''
|
||||
''' Die erwarteten Knoten-Namen sind in der List EmbeddedFilesColumnNames enthalten!
|
||||
''' </summary>
|
||||
Private Function HandleEmbeddedAttachments(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pConnections As DatabaseConnections,
|
||||
pCheckResult As CheckPropertyValuesResult, pArgs As WorkerArgs, pProcessFileResult As ProcessFileResult) As Boolean
|
||||
Private Function CreateEmbeddedFilesOnDisk(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pConnections As DatabaseConnections, pCheckResult As CheckPropertyValuesResult) As Boolean
|
||||
|
||||
If (pCheckResult Is Nothing) Then
|
||||
_logger.Debug("pCheckResult is empty!")
|
||||
Return True
|
||||
End If
|
||||
|
||||
If (CheckEmbeddedAttachmentEntries(pCheckResult) = False) Then
|
||||
_logger.Debug("No embedded Files in XML found!")
|
||||
Return True
|
||||
End If
|
||||
|
||||
Dim embAttachmentList As List(Of ValidProperty) = pCheckResult.ValidProperties.Where(
|
||||
Function(z)
|
||||
Return EmbeddedFilesColumnNames.Contains(z.TableColumn)
|
||||
End Function
|
||||
).ToList()
|
||||
|
||||
If embAttachmentList Is Nothing OrElse embAttachmentList.Count <= 0 Then
|
||||
_logger.Debug("No Fields for Embedded Files configured!")
|
||||
Return True
|
||||
End If
|
||||
|
||||
' GroupCounter Werte in Hashset eintragen, um distinct Werte zu erhalten
|
||||
Dim oIndexList As HashSet(Of Integer) = New HashSet(Of Integer)
|
||||
For Each resultItem In embAttachmentList
|
||||
oIndexList.Add(resultItem.GroupCounter)
|
||||
Next
|
||||
|
||||
Dim oOutputPath As String = GetOutputPathForEmbeddedAttachments(pArgs)
|
||||
Dim nextAttachmentIndex As Integer = 0
|
||||
nextAttachmentIndex = GetNextAttachmentIndex(pMessageId)
|
||||
If nextAttachmentIndex <= 0 Then
|
||||
nextAttachmentIndex = 1
|
||||
End If
|
||||
|
||||
For Each groupIndex In oIndexList
|
||||
|
||||
Dim oMimeCodeString As String = String.Empty
|
||||
Dim oOrgFilename As String = String.Empty
|
||||
Dim oBase64String As String = String.Empty
|
||||
|
||||
Dim oMimeTypeProperty As ValidProperty = GetIndexProperty(embAttachmentList, groupIndex, "ATTACHMENT_FILE_MIMECODE")
|
||||
|
||||
If oMimeTypeProperty IsNot Nothing AndAlso oMimeTypeProperty.Value.IsNotNullOrEmpty() Then
|
||||
oMimeCodeString = oMimeTypeProperty.Value.ToLower()
|
||||
Else
|
||||
_logger.Debug("Empty MIME-Code! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim oFilenameProperty As ValidProperty = GetIndexProperty(embAttachmentList, groupIndex, "ATTACHMENT_FILE_FILENAME")
|
||||
If oFilenameProperty IsNot Nothing AndAlso oFilenameProperty.Value.IsNotNullOrEmpty() Then
|
||||
oOrgFilename = oFilenameProperty.Value
|
||||
Else
|
||||
_logger.Debug("Empty Filename! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim oBase64ValueProperty As ValidProperty = GetIndexProperty(embAttachmentList, groupIndex, "ATTACHMENT_FILE_VALUE")
|
||||
If oBase64ValueProperty IsNot Nothing AndAlso oBase64ValueProperty.Value.IsNotNullOrEmpty() Then
|
||||
oBase64String = oBase64ValueProperty.Value
|
||||
Else
|
||||
_logger.Error("Empty base64 String! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim newAttachmentFilename = pMessageId + "~attm" + nextAttachmentIndex.ToString
|
||||
|
||||
Dim oFileExtension = GetEmbeddedFileExtension(oMimeTypeProperty.Value)
|
||||
If oFileExtension.IsNotNullOrEmpty() Then
|
||||
newAttachmentFilename += "." + oFileExtension
|
||||
Else
|
||||
_logger.Warn("No extension found! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim embeddedFilePath = Path.Combine(oOutputPath, newAttachmentFilename)
|
||||
_logger.Debug("Next Attachment File is [{0}]", embeddedFilePath)
|
||||
If SaveBase64ToDisk(embeddedFilePath, oBase64String) = True Then
|
||||
_logger.Debug("Saved file [{0}] to disk", embeddedFilePath)
|
||||
pProcessFileResult.EmailAttachmentFiles.Add(New FileInfo(embeddedFilePath))
|
||||
Else
|
||||
_logger.Error("Could not save File to Disk!")
|
||||
Dim oReasonString = "Could not save file " + newAttachmentFilename + " to disk."
|
||||
AddRejectedState(pMessageId, oReasonString, "EMBEDDED FILE CONSISTENCY NOT OK", "Info GUI", pConnections.SQLServerTransaction)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If TestFileOnDisk(embeddedFilePath, oMimeCodeString) = False Then
|
||||
_logger.Error("Could not save File to Disk!")
|
||||
Dim oReasonString = "Validation of file " + newAttachmentFilename + " on disk was NOT succesfully."
|
||||
AddRejectedState(pMessageId, oReasonString, "EMBEDDED FILE CONSISTENCY NOT OK", "Info GUI", pConnections.SQLServerTransaction)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If InsertAttachmentHistoryEntry(pMessageId, oOrgFilename, embeddedFilePath) = False Then
|
||||
_logger.Error("Could not save attachment Data to DB!")
|
||||
Return False
|
||||
End If
|
||||
|
||||
If InsertEmbeddedFileDataToDB(pMessageId, oBase64String, oOrgFilename, oMimeCodeString, groupIndex) = False Then
|
||||
_logger.Error("Could not save attachment Data to DB!")
|
||||
Return False
|
||||
End If
|
||||
|
||||
nextAttachmentIndex += 1
|
||||
Next
|
||||
' Finde alle Eintraege in pCheckResult mit Item_Type=3
|
||||
' Finde Dateinamen (Index nach ~attm) und Dateityp. Wir speichern nur PDF.
|
||||
' TODO Funktion aufrufen
|
||||
'SaveBase64ToDisk("", "") = False Then
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function TestFileOnDisk(pEmbeddedFilePath As String, pMimeCodeString As String) As Boolean
|
||||
Try
|
||||
If pMimeCodeString = MIME_TYPE_PDF Then
|
||||
Dim oGdPicturePDF As New GdPicturePDF
|
||||
Dim oStatus As GdPictureStatus = oGdPicturePDF.LoadFromFile(pEmbeddedFilePath, True)
|
||||
If oStatus <> GdPictureStatus.OK Then
|
||||
_logger.Error("File [{0}] has no proper state!", pEmbeddedFilePath)
|
||||
Return False
|
||||
End If
|
||||
|
||||
Else
|
||||
' Test other files
|
||||
Dim fileInfo As FileInfo = New FileInfo(pEmbeddedFilePath)
|
||||
If fileInfo.Exists = False Then
|
||||
_logger.Error("Could not find File [{0}] on Disk!", pEmbeddedFilePath)
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetEmbeddedFileExtension(pMimeTypeValue As String) As String
|
||||
|
||||
If pMimeTypeValue.IsNullOrEmpty() Then
|
||||
_logger.Warn("Empty MimeCode is not allowed!")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
Select Case pMimeTypeValue.ToLower()
|
||||
Case MIME_TYPE_PDF
|
||||
Return "pdf"
|
||||
Case MIME_TYPE_XLSX
|
||||
Return "xlsx"
|
||||
Case MIME_TYPE_ODT
|
||||
Return "odt"
|
||||
Case "image/jpeg"
|
||||
Return "jpg"
|
||||
Case "image/png"
|
||||
Return "png"
|
||||
Case "image/tiff"
|
||||
Return "tif"
|
||||
Case "text/csv"
|
||||
Return "csv"
|
||||
Case "text/xml"
|
||||
Return "xml"
|
||||
Case Else
|
||||
Return String.Empty
|
||||
End Select
|
||||
|
||||
End Function
|
||||
|
||||
Private Shared Function GetIndexProperty(pListResult As List(Of ValidProperty), pGroupIndex As Integer, pTableColumn As String) As ValidProperty
|
||||
Return pListResult.Where(
|
||||
Function(z)
|
||||
Return z.GroupCounter = pGroupIndex AndAlso z.TableColumn = pTableColumn
|
||||
End Function
|
||||
).FirstOrDefault
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Speichert die Daten inkl. base64-String in die Datenbank
|
||||
''' </summary>
|
||||
Private Function InsertEmbeddedFileDataToDB(pMessageId As String, pItemValue As String, pOrgFilename As String, pMimeType As String, pGroupIndex As Integer) As Boolean
|
||||
Try
|
||||
Dim oCommand = New SqlCommand(
|
||||
"INSERT INTO TBEDMI_ITEM_FILES (
|
||||
REFERENCE_GUID,
|
||||
ITEM_VALUE,
|
||||
ORG_FILENAME,
|
||||
MIME_TYPE,
|
||||
GROUP_INDEX,
|
||||
CREATED_WHO
|
||||
) VALUES (
|
||||
@MESSAGE_ID,
|
||||
@ITEM_VALUE,
|
||||
@ORG_FILENAME,
|
||||
@MIME_TYPE,
|
||||
@GROUP_INDEX,
|
||||
@CREATED_WHO
|
||||
)")
|
||||
|
||||
Dim fileBytes As Byte() = Convert.FromBase64String(pItemValue)
|
||||
|
||||
oCommand.Parameters.Add("MESSAGE_ID", SqlDbType.VarChar, 250).Value = pMessageId
|
||||
oCommand.Parameters.Add("ITEM_VALUE", SqlDbType.VarBinary).Value = fileBytes
|
||||
oCommand.Parameters.Add("ORG_FILENAME", SqlDbType.VarChar, 256).Value = pOrgFilename
|
||||
oCommand.Parameters.Add("MIME_TYPE", SqlDbType.VarChar, 256).Value = pMimeType
|
||||
oCommand.Parameters.Add("GROUP_INDEX", SqlDbType.Int).Value = pGroupIndex
|
||||
oCommand.Parameters.Add("CREATED_WHO", SqlDbType.VarChar, 100).Value = "eInvoice Parser"
|
||||
|
||||
_mssql.ExecuteNonQuery(oCommand)
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt den Ausgabepfad für die eingebetteten Anhänge
|
||||
''' </summary>
|
||||
Private Function GetOutputPathForEmbeddedAttachments(pArgs As WorkerArgs) As String
|
||||
Return pArgs.WatchDirectory
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Prüft, ob Embedded Attachments in den XML-Ergebnissen enthalten sind,
|
||||
''' in dem geprüft wird, ob bestimmte MIME-Codes vorhanden sind.
|
||||
''' </summary>
|
||||
''' <param name="pCheckResult"></param>
|
||||
''' <returns></returns>
|
||||
Private Function CheckEmbeddedAttachmentEntries(pCheckResult As CheckPropertyValuesResult) As Boolean
|
||||
|
||||
Try
|
||||
Dim resultList = pCheckResult.ValidProperties.Where(
|
||||
Function(z)
|
||||
Return (z.TableColumn = "ATTACHMENT_FILE_MIMECODE" AndAlso AllowedMimeTypesInEmbeddedFiles.Contains(z.Value.ToLower()))
|
||||
End Function
|
||||
).ToList()
|
||||
|
||||
If resultList.Count > 0 Then
|
||||
_logger.Info("Found [{0}] embedded XML-Attachments.", resultList.Count)
|
||||
Return True
|
||||
Else
|
||||
_logger.Info("No embedded XML-Attachments found.")
|
||||
Return False
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Error("Error searching pCheckResult! {0}", ex.Message)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' Speichere base64 als Datei auf der Platte ab.
|
||||
''' </summary>
|
||||
Private Function SaveBase64ToDisk(pExportFilePath As String, pBase64String As String) As Boolean
|
||||
|
||||
Try
|
||||
Dim base64BinaryDataString As String = pBase64String ' Hier Base64-String einfügen
|
||||
Dim binaryDataString As Byte() = System.Convert.FromBase64String(base64BinaryDataString)
|
||||
Dim oFilename As String = pExportFilePath
|
||||
Dim base64BinaryDataString As String = pBase64String
|
||||
Dim binaryDataString As Byte() = Convert.FromBase64String(base64BinaryDataString)
|
||||
|
||||
' Using verwenden, um blockieren der Datei zu verhindern
|
||||
Using fs = New FileStream(oFilename, FileMode.Create, FileAccess.ReadWrite)
|
||||
fs.Write(binaryDataString, 0, binaryDataString.Length)
|
||||
fs.Flush()
|
||||
fs.Close()
|
||||
End Using
|
||||
|
||||
Return True
|
||||
|
||||
Dim Stream As System.IO.FileStream = New System.IO.FileStream(oFilename, System.IO.FileMode.Create)
|
||||
Stream.Write(binaryDataString, 0, binaryDataString.Length)
|
||||
Stream.Close()
|
||||
Catch ex As Exception
|
||||
_logger.Error("Could NOT save File [{0}] to Disk! Exception: [{1}]", pExportFilePath, ex.Message)
|
||||
Return False
|
||||
_logger.Error("Could NOT save File to Disk for MessageId [{0}] !", pExportFilePath)
|
||||
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Die Methode lädt die bisherigen Dateinamen zu einer MessageID
|
||||
''' Die Datei mit dem höchsten Index gibt den folgenden Index vor.
|
||||
''' </summary>
|
||||
''' <returns>Nächster Attachment Index</returns>
|
||||
Private Function GetNextAttachmentIndex(pMessageId As String) As Integer
|
||||
Try
|
||||
Dim oSQL = $"SELECT count(*) FROM TBEMLP_HISTORY_ATTACHMENT WITH (NOLOCK) WHERE EMAIL_MSGID = '{pMessageId}'"
|
||||
|
||||
Dim sqlResult = _mssql.GetScalarValue(oSQL)
|
||||
If sqlResult = 0 Then
|
||||
sqlResult = 1 ' Kleinster Index = 1
|
||||
End If
|
||||
|
||||
Return sqlResult
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Speichert die Infos zu einem embedded Dateianhang in die DB.
|
||||
''' Mangels EMail-Daten werden die EMail-Felder (FROM, BODY, usw.) nicht gefüllt
|
||||
''' </summary>
|
||||
''' <returns>true, wenn erfolgreich</returns>
|
||||
Private Function InsertAttachmentHistoryEntry(pMessageId As String, pFileName As String, pNewFileName As String) As Boolean
|
||||
|
||||
Try
|
||||
Dim oCommand = New SqlCommand(
|
||||
"INSERT INTO TBEMLP_HISTORY_ATTACHMENT (
|
||||
WORK_PROCESS,
|
||||
EMAIL_MSGID,
|
||||
EMAIL_ATTMT,
|
||||
EMAIL_ATTMT_INDEX,
|
||||
EMAIL_FROM,
|
||||
EMAIL_BODY
|
||||
) VALUES (
|
||||
@WORK_PROCESS,
|
||||
@MESSAGE_ID,
|
||||
@ATTACHMENT,
|
||||
@ATTACHMENT_INDEX,
|
||||
'-',
|
||||
'-'
|
||||
)")
|
||||
|
||||
oCommand.Parameters.Add("WORK_PROCESS", SqlDbType.VarChar, 100).Value = "Attachment Sniffer (Embedded Files)"
|
||||
oCommand.Parameters.Add("MESSAGE_ID", SqlDbType.VarChar, 500).Value = pMessageId
|
||||
oCommand.Parameters.Add("ATTACHMENT", SqlDbType.VarChar, 500).Value = pFileName
|
||||
oCommand.Parameters.Add("ATTACHMENT_INDEX", SqlDbType.VarChar, 500).Value = pNewFileName
|
||||
|
||||
_mssql.ExecuteNonQuery(oCommand)
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function BulkInsertDataToDatabase(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pConnections As DatabaseConnections, pCheckResults As CheckPropertyValuesResult) As Boolean
|
||||
@@ -1162,7 +771,7 @@ Public Class ImportZUGFeRDFiles
|
||||
' Erste Zeile enthält die Spezifikation
|
||||
Dim oFirstRow As DataRow = oDataTable.NewRow()
|
||||
oFirstRow("REFERENCE_GUID") = pMessageId
|
||||
oFirstRow("ITEM_DESCRIPTION") = "Verwendete Spezifikation der E-Rechnung"
|
||||
oFirstRow("ITEM_DESCRIPTION") = "ZUGFeRDSpezifikation"
|
||||
oFirstRow("ITEM_VALUE") = pDocument.Specification
|
||||
oFirstRow("GROUP_COUNTER") = 0
|
||||
oFirstRow("SPEC_NAME") = "ZUGFERD_SPECIFICATION"
|
||||
@@ -1174,7 +783,7 @@ Public Class ImportZUGFeRDFiles
|
||||
' Zweite Zeile enthält das verwendete XML Schema
|
||||
Dim oSecondRow As DataRow = oDataTable.NewRow()
|
||||
oSecondRow("REFERENCE_GUID") = pMessageId
|
||||
oSecondRow("ITEM_DESCRIPTION") = "Verwendetes XML-Schema (XSD) der E-Rechnung"
|
||||
oSecondRow("ITEM_DESCRIPTION") = "ZUGFeRDXMLSchema"
|
||||
oSecondRow("ITEM_VALUE") = pDocument.UsedXMLSchema
|
||||
oSecondRow("GROUP_COUNTER") = 0
|
||||
oSecondRow("SPEC_NAME") = "ZUGFERD_XML_SCHEMA"
|
||||
@@ -1186,7 +795,7 @@ Public Class ImportZUGFeRDFiles
|
||||
' Dritte Zeile enthält das verwendete Datei-Format des Belegs (PDF/XML)
|
||||
Dim oThirdRow As DataRow = oDataTable.NewRow()
|
||||
oThirdRow("REFERENCE_GUID") = pMessageId
|
||||
oThirdRow("ITEM_DESCRIPTION") = "Dateityp der E-Rechnung"
|
||||
oThirdRow("ITEM_DESCRIPTION") = "ReceiptFileType"
|
||||
oThirdRow("ITEM_VALUE") = pDocument.ReceiptFileType
|
||||
oThirdRow("GROUP_COUNTER") = 0
|
||||
oThirdRow("SPEC_NAME") = "RECEIPT_FILE_TYPE"
|
||||
@@ -1202,12 +811,6 @@ Public Class ImportZUGFeRDFiles
|
||||
Continue For
|
||||
End If
|
||||
|
||||
' ItemType = 0 (normale texte) dürfen nicht leer sein
|
||||
If oProperty.ItemType = 0 And oProperty.Value.IsNullOrEmpty Then
|
||||
_logger.Debug("No Mapping for Property [{0}] with empty value, because of ItemType = 0.", oProperty.TableColumn)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
' If GroupCounter is -1, it means this is a default property that can only occur once.
|
||||
' Set the actual inserted value to 0
|
||||
Dim oGroupCounterValue As Integer = oProperty.GroupCounter
|
||||
@@ -1215,27 +818,19 @@ Public Class ImportZUGFeRDFiles
|
||||
oGroupCounterValue = 0
|
||||
End If
|
||||
|
||||
If oProperty.Value.Length > 4000 Then
|
||||
_logger.Warn("Value for field [{0}] is longer than 4000 characters, will be truncated!", oProperty.TableColumn)
|
||||
oProperty.Value = oProperty.Value.Truncate(4000)
|
||||
End If
|
||||
|
||||
Dim oDescription As String
|
||||
If oProperty.EN16931_ID IsNot Nothing AndAlso oProperty.EN16931_ID.Length > 1 Then
|
||||
oDescription = oProperty.EN16931_ID + " (" + oProperty.Description + ")"
|
||||
Else
|
||||
oDescription = oProperty.Description
|
||||
If oProperty.Value.Length > 900 Then
|
||||
_logger.Warn("Value for field [{0}] is longer than 900 characters, will be truncated!", oProperty.TableColumn)
|
||||
End If
|
||||
|
||||
Dim oNewRow As DataRow = oDataTable.NewRow()
|
||||
oNewRow("REFERENCE_GUID") = pMessageId
|
||||
oNewRow("ITEM_DESCRIPTION") = oDescription
|
||||
oNewRow("ITEM_VALUE") = oProperty.Value
|
||||
oNewRow("ITEM_DESCRIPTION") = oProperty.Description
|
||||
oNewRow("ITEM_VALUE") = oProperty.Value.Truncate(900).Replace("'", "''")
|
||||
oNewRow("GROUP_COUNTER") = oGroupCounterValue
|
||||
oNewRow("SPEC_NAME") = oProperty.TableColumn
|
||||
oNewRow("IS_REQUIRED") = oProperty.IsRequired
|
||||
|
||||
_logger.Debug("Mapping Property [{0}] with value [{1}]", oProperty.TableColumn, oProperty.Value)
|
||||
_logger.Debug("Mapping Property [{0}] with value [{1}]", oProperty.TableColumn, oProperty.Value.Replace("'", "''"))
|
||||
oDataTable.Rows.Add(oNewRow)
|
||||
Next
|
||||
|
||||
@@ -1243,7 +838,7 @@ Public Class ImportZUGFeRDFiles
|
||||
End Function
|
||||
|
||||
Private Function DeleteExistingPropertyValues(pMessageId As String, pConnections As DatabaseConnections) As Boolean
|
||||
Dim oDelSQL = $"DELETE FROM TBEDMI_ITEM_VALUE where REFERENCE_GUID = N'{pMessageId}'"
|
||||
Dim oDelSQL = $"DELETE FROM TBEDMI_ITEM_VALUE where REFERENCE_GUID = '{pMessageId}'"
|
||||
Dim oStep As String = "TBEDMI_ITEM_VALUE Delete MessageID Items"
|
||||
|
||||
Try
|
||||
@@ -1253,15 +848,6 @@ Public Class ImportZUGFeRDFiles
|
||||
_logger.Warn("Step [{0}] with SQL [{1}] was not successful.", oStep, oDelSQL)
|
||||
End Try
|
||||
|
||||
Try
|
||||
oDelSQL = $"DELETE FROM TBEDMI_ITEM_FILES where REFERENCE_GUID = '{pMessageId}'"
|
||||
oStep = "TBEDMI_ITEM_FILES Delete MessageID Items"
|
||||
Dim retValue As Boolean = _mssql.ExecuteNonQueryWithConnectionObject(oDelSQL, pConnections.SQLServerConnection, MSSQLServer.TransactionMode.ExternalTransaction, pConnections.SQLServerTransaction)
|
||||
Return retValue
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Step [{0}] with SQL [{1}] was not successful.", oStep, oDelSQL)
|
||||
End Try
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
@@ -1285,10 +871,6 @@ Public Class ImportZUGFeRDFiles
|
||||
Return True
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Fügt neue Datensätze in Tabelle TBEMLP_HISTORY_STATE ein,
|
||||
''' per Prozedur DD_ECM.[dbo].[PRCUST_ADD_HISTORY_STATE]
|
||||
''' </summary>
|
||||
Private Sub AddRejectedState(pMessageID As String, pTitle As String, pTitle1 As String, pComment As String, pTransaction As SqlTransaction)
|
||||
Try
|
||||
'PRCUST_ADD_HISTORY_STATE: @MessageID VARCHAR(250), @TITLE1 VARCHAR(250), @TITLE2 VARCHAR(250)
|
||||
@@ -1298,5 +880,4 @@ Public Class ImportZUGFeRDFiles
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
@@ -12,7 +12,7 @@ Public Class WorkerArgs
|
||||
Public NonZugferdDirectory As String = Nothing
|
||||
|
||||
' Property Parameter
|
||||
Public PropertyMapList As New List(Of XmlItemProperty)
|
||||
Public PropertyMap As New Dictionary(Of String, XmlItemProperty)
|
||||
|
||||
' Email Parameter
|
||||
Public EmailOutProfileId As Integer = 0
|
||||
@@ -31,8 +31,6 @@ Public Class WorkerArgs
|
||||
Public AllowXRechnung As Boolean = True
|
||||
Public AllowZugferd10 As Boolean = True
|
||||
Public AllowZugferd2x As Boolean = True
|
||||
Public AllowZugferd23x As Boolean = True
|
||||
Public AllowPeppolBISBill3x As Boolean = False
|
||||
Public AllowEBInterface As Boolean = False
|
||||
|
||||
End Class
|
||||
File diff suppressed because it is too large
Load Diff
2454
Jobs/logParser.txt
2454
Jobs/logParser.txt
File diff suppressed because it is too large
Load Diff
@@ -4,36 +4,30 @@
|
||||
<package id="DocumentFormat.OpenXml" version="3.2.0" targetFramework="net462" />
|
||||
<package id="DocumentFormat.OpenXml.Framework" version="3.2.0" targetFramework="net462" />
|
||||
<package id="FirebirdSql.Data.FirebirdClient" version="7.5.0" targetFramework="net461" />
|
||||
<package id="GdPicture" version="14.4.4" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.4.4" targetFramework="net462" />
|
||||
<package id="Google.Protobuf" version="3.33.2" targetFramework="net462" />
|
||||
<package id="GdPicture" version="14.3.3" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.3.3" targetFramework="net462" />
|
||||
<package id="Microsoft.AspNet.WebApi.Client" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.Cryptography" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.HashCode" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.CSharp" version="4.7.0" targetFramework="net462" />
|
||||
<package id="Microsoft.VisualBasic" version="10.3.0" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json.Bson" version="1.0.2" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="OpenMcdf" version="3.1.4" targetFramework="net462" />
|
||||
<package id="OpenMcdf" version="2.4.1" targetFramework="net462" />
|
||||
<package id="protobuf-net" version="3.2.46" targetFramework="net462" />
|
||||
<package id="protobuf-net.Core" version="3.2.46" targetFramework="net462" />
|
||||
<package id="RtfPipe" version="2.0.7677.4303" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.CodeDom" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Formats.Asn1" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Pipelines" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Management" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Channels" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="8.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -44,6 +44,10 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
@@ -121,12 +125,6 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>DigitalData.Modules.License</RootNamespace>
|
||||
<AssemblyName>DigitalData.Modules.License</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>Windows</MyType>
|
||||
<TargetFrameworkVersion>net462</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.License.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.License.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="LicenseCreator.vb" />
|
||||
<Compile Include="LicenseFile.vb" />
|
||||
<Compile Include="LicenseLegacy.vb" />
|
||||
<Compile Include="LicenseManagerLegacy.vb" />
|
||||
<Compile Include="LicenseSchema.vb">
|
||||
<DependentUpon>LicenseSchema.xsd</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LicensesLegacy.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Application.myapp</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Resources.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Settings.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="LicenseSchema.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="My Project\Application.myapp">
|
||||
<Generator>MyApplicationCodeGenerator</Generator>
|
||||
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="My Project\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -510,6 +510,7 @@ Public Class LogConfig
|
||||
' Add debug rule, if configured
|
||||
If _EnableDebugLogging = True Then
|
||||
_config.AddRule(LogLevel.Debug, LogLevel.Error, TARGET_DEBUG)
|
||||
oLogger.Info("DEBUG Logging is now Enabled.")
|
||||
Else
|
||||
oLogger.Debug("DEBUG Logging is now Disabled.")
|
||||
End If
|
||||
|
||||
@@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyCompany("Digital Data GmbH, Heuchelheim")>
|
||||
<Assembly: AssemblyProduct("Modules.Logging")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("2.7.0.0")>
|
||||
<Assembly: AssemblyTrademark("2.6.4.0")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.7.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.7.0.0")>
|
||||
<Assembly: AssemblyVersion("2.6.5.0")>
|
||||
<Assembly: AssemblyFileVersion("2.6.5.0")>
|
||||
|
||||
2
Logging/My Project/Settings.Designer.vb
generated
2
Logging/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -31,10 +31,7 @@ Namespace Mail
|
||||
Public Function Connect(pServer As String, pPort As Integer, pUser As String, pPassword As String, pAuthType As String, pOptions As MailSession.MailSessionOptions) As MailSession.SessionInfo
|
||||
Return MailSession.ConnectToServerWithBasicAuth(pServer, pPort, pUser, pPassword, pAuthType, pOptions)
|
||||
End Function
|
||||
Public Function ConnectToO365(pUser As String, pClientId As String, pTenantId As String, pClientSecret As String) As MailSession.SessionInfo
|
||||
Dim oOptions = New MailSession.MailSessionOptions With {.EnableTls1_2 = True}
|
||||
Return MailSession.ConnectToServerWithO365OAuth(pUser, pClientId, pTenantId, pClientSecret, oOptions)
|
||||
End Function
|
||||
|
||||
Public Function Disconnect() As Boolean
|
||||
Return MailSession.DisconnectFromServer()
|
||||
End Function
|
||||
|
||||
@@ -5,20 +5,25 @@ Imports Limilabs.Client
|
||||
Imports Limilabs.Client.IMAP
|
||||
Imports Limilabs.Client.SMTP
|
||||
Imports Microsoft.Identity.Client
|
||||
Imports NLog
|
||||
|
||||
Namespace Mail
|
||||
Public Class MailSession
|
||||
Inherits BaseClass
|
||||
|
||||
Public ReadOnly Client As ClientBase
|
||||
Public ReadOnly OAuth2 As OAuth2
|
||||
|
||||
Public Const AUTH_SSL = "SSL"
|
||||
Public Const AUTH_STARTTLS = "STARTTLS"
|
||||
Public Const AUTH_SSLTLS = "SSL/TLS"
|
||||
Public Const AUTH_NONE = "NONE"
|
||||
Public Const AUTH_OAUTH2 = "OAUTH2"
|
||||
Public Const SSLProtocol_TLS12 = "TLS12"
|
||||
|
||||
Private Const SMTP_IGNORED_ERRORS As SslPolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors Or SslPolicyErrors.RemoteCertificateNameMismatch
|
||||
Private Const SMTP_IGNORED_ERRORS As SslPolicyErrors =
|
||||
SslPolicyErrors.RemoteCertificateChainErrors Or ' self-signed
|
||||
SslPolicyErrors.RemoteCertificateNameMismatch ' name mismatch
|
||||
|
||||
Private _Session As SessionInfo
|
||||
|
||||
@@ -53,7 +58,7 @@ Namespace Mail
|
||||
Public Property EnableTls1_1 As Boolean = False
|
||||
Public Property EnableTls1_2 As Boolean = False
|
||||
|
||||
' Not available in .NET4.6.2
|
||||
' Not available in .NET 4.6.2
|
||||
'Public Property EnableTls1_3 As Boolean = False
|
||||
End Class
|
||||
|
||||
@@ -68,19 +73,21 @@ Namespace Mail
|
||||
''' <returns></returns>
|
||||
Public Function ConnectToServerWithBasicAuth(pServer As String, pPort As Integer, pUser As String, pPassword As String, pAuthType As String, pOptions As MailSessionOptions) As SessionInfo
|
||||
Dim oSession = New SessionInfo With {
|
||||
.Server = pServer,
|
||||
.Port = pPort,
|
||||
.User = pUser,
|
||||
.Password = pPassword,
|
||||
.AuthType = pAuthType
|
||||
}
|
||||
.Server = pServer,
|
||||
.Port = pPort,
|
||||
.User = pUser,
|
||||
.Password = pPassword,
|
||||
.AuthType = pAuthType
|
||||
}
|
||||
|
||||
Logger.Debug("Connecting to Server..")
|
||||
Logger.Debug("ConnectToServerWithBasicAuth..")
|
||||
Logger.Debug("Server: [{0}]", oSession.Server)
|
||||
Logger.Debug("Port: [{0}]", oSession.Port)
|
||||
Logger.Debug("User: [{0}]", oSession.User)
|
||||
Logger.Debug("AuthType: [{0}]", oSession.AuthType)
|
||||
|
||||
Logger.Debug($"_Config.TlsVersion.EnableTls1_1 = [{pOptions.EnableTls1_1}]")
|
||||
Logger.Debug($"_Config.TlsVersion.EnableTls1_2 = [{pOptions.EnableTls1_2}]")
|
||||
Logger.Debug($"_Config.TlsVersion.EnableDefault = [{pOptions.EnableDefault}]")
|
||||
_Session = oSession
|
||||
|
||||
Logger.Debug("Initializing Connection with Auth type [{0}].", oSession.AuthType)
|
||||
@@ -89,23 +96,17 @@ Namespace Mail
|
||||
End Function
|
||||
|
||||
Public Function ConnectToServerWithO365OAuth(pUser As String, pClientId As String, pTenantId As String, pClientSecret As String, pOptions As MailSessionOptions) As SessionInfo
|
||||
' Choose server/port based on the client type
|
||||
Dim oServer As String = If(TypeOf Client Is Smtp, "smtp-mail.outlook.com", OAuth2.O365_SERVER_IMAP)
|
||||
Dim port As Integer = If(TypeOf Client Is Imap, 993, If(TypeOf Client Is Smtp, 587, 993))
|
||||
|
||||
Dim oSession = New SessionInfo With {
|
||||
.Server = oServer,
|
||||
.Port = port,
|
||||
.ClientId = pClientId,
|
||||
.ClientSecret = pClientSecret,
|
||||
.TenantId = pTenantId,
|
||||
.User = pUser,
|
||||
.AuthType = AUTH_OAUTH2
|
||||
}
|
||||
.Server = OAuth2.O365_SERVER,
|
||||
.ClientId = pClientId,
|
||||
.ClientSecret = pClientSecret,
|
||||
.TenantId = pTenantId,
|
||||
.User = pUser,
|
||||
.AuthType = AUTH_OAUTH2
|
||||
}
|
||||
|
||||
Logger.Debug("Connecting to Server..")
|
||||
Logger.Debug("Server: [{0}]", oSession.Server)
|
||||
Logger.Debug("Port: [{0}]", oSession.Port)
|
||||
Logger.Debug("User: [{0}]", oSession.User)
|
||||
Logger.Debug("ClientId: [{0}]", oSession.ClientId)
|
||||
Logger.Debug("TenantId: [{0}]", oSession.TenantId)
|
||||
@@ -123,52 +124,59 @@ Namespace Mail
|
||||
|
||||
If pOptions.EnableDefault Then
|
||||
Logger.Debug("Enabling Default TLS Version")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Default
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.Default
|
||||
Else
|
||||
Logger.Debug("Disabling Default TLS Version")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.None
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.None
|
||||
End If
|
||||
|
||||
' Set TLS Version manually if requested
|
||||
If pOptions.EnableTls1_1 Then
|
||||
Logger.Debug("Enabling TLS Version1.1")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Client.SSLConfiguration.EnabledSslProtocols Or System.Security.Authentication.SslProtocols.Tls11
|
||||
Logger.Debug("Enabling TLS Version 1.1...")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Client.SSLConfiguration.EnabledSslProtocols Or Security.Authentication.SslProtocols.Tls11
|
||||
End If
|
||||
|
||||
If pOptions.EnableTls1_2 Then
|
||||
Logger.Debug("Enabling TLS Version1.2")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Client.SSLConfiguration.EnabledSslProtocols Or System.Security.Authentication.SslProtocols.Tls12
|
||||
Logger.Debug("Enabling TLS Version 1.2...")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.Tls12
|
||||
End If
|
||||
'If pOptions.EnableTls1_3 Then
|
||||
' Logger.Debug("Enabling TLS Version 1.3")
|
||||
' oSession.SSLConfiguration.EnabledSslProtocols = oSession.SSLConfiguration.EnabledSslProtocols Or Security.Authentication.SslProtocols.Tls13
|
||||
'End If
|
||||
|
||||
Logger.Debug("Enabled Encryption Protocols: [{0}]", Client.SSLConfiguration.EnabledSslProtocols)
|
||||
|
||||
If pSession.AuthType = AUTH_OAUTH2 Then
|
||||
Try
|
||||
If TypeOf Client Is Imap Then
|
||||
Dim oClient As Imap = DirectCast(Client, Imap)
|
||||
Logger.Debug("Connecting with [OAuth2/IMAP/ConnectSSL] on [{0}/{1}]", pSession.Server, If(pSession.Port > 0, pSession.Port, 993))
|
||||
oClient.ConnectSSL(pSession.Server) ', If(pSession.Port > 0, pSession.Port, 993)
|
||||
Dim oClient As Imap = Client
|
||||
|
||||
ElseIf TypeOf Client Is Smtp Then
|
||||
Dim s As Smtp = DirectCast(Client, Smtp)
|
||||
Logger.Debug("Connecting with [OAuth2/SMTP/STARTTLS] on [{0}/{1}]", pSession.Server, If(pSession.Port > 0, pSession.Port, 587))
|
||||
s.Connect(pSession.Server, If(pSession.Port > 0, pSession.Port, 587))
|
||||
s.StartTLS()
|
||||
Logger.Debug("Connecting with [OAuth2/ConnectSSL] on [{0}]", pSession.Server)
|
||||
oClient.ConnectSSL(pSession.Server)
|
||||
Else
|
||||
Throw New ApplicationException("Only OAuth2 for IMAP is not yet supported!")
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type OAuth2!")
|
||||
Logger.Error(ex)
|
||||
|
||||
pSession.Error = ex
|
||||
Return pSession
|
||||
Session.Error = ex
|
||||
Return Session
|
||||
End Try
|
||||
|
||||
ElseIf pSession.AuthType = AUTH_SSL Then
|
||||
Try
|
||||
' SSL: always connect with SSL immediately
|
||||
Logger.Debug("Connecting with [SSL/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
' Port 465 ist der SMTP-SSL-Port, wird bei der WISAG verwendet, aber veraltet
|
||||
' Port 993 ist der IMAP-SSL-Port, zum Abholen der Mails
|
||||
If pSession.Port = 465 Or pSession.Port = 993 Then
|
||||
Logger.Debug("Connecting with [SSL/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
Else
|
||||
Logger.Debug("Connecting with [SSL/Connect] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.Connect(pSession.Server, pSession.Port)
|
||||
End If
|
||||
Logger.Debug("Connection (AUTH_SSL) Successful!")
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -176,41 +184,23 @@ Namespace Mail
|
||||
Logger.Warn($"Error-message: {ex.Message}")
|
||||
Logger.Error(ex)
|
||||
|
||||
pSession.Error = ex
|
||||
Return pSession
|
||||
Session.Error = ex
|
||||
Return Session
|
||||
End Try
|
||||
|
||||
ElseIf pSession.AuthType = AUTH_SSLTLS Then
|
||||
ElseIf Session.AuthType = AUTH_SSLTLS Or Session.AuthType = AUTH_STARTTLS Then
|
||||
|
||||
Try
|
||||
' SSL/TLS: same as SSL, explicit branch for clarity
|
||||
Logger.Debug("Connecting with [SSL/TLS/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
Logger.Debug("Connection (AUTH_SSLTLS) Successful!")
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type SSL/TLS!")
|
||||
Logger.Error(ex)
|
||||
|
||||
pSession.Error = ex
|
||||
Return pSession
|
||||
End Try
|
||||
|
||||
ElseIf pSession.AuthType = AUTH_STARTTLS Then
|
||||
|
||||
Try
|
||||
' STARTTLS: connect plain and then upgrade
|
||||
Logger.Debug("Connecting with [STARTTLS/Connect] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
' Für Azure Communication Services: Explizite TLS-Konfiguration
|
||||
If pSession.Server.Contains("azurecomm.net") Then
|
||||
Logger.Debug("Azure Communication Services detected - forcing TLS 1.2")
|
||||
' Überschreibe alle vorherigen Einstellungen
|
||||
Client.SSLConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12
|
||||
Logger.Debug("Forced Encryption Protocols: [{0}]", Client.SSLConfiguration.EnabledSslProtocols)
|
||||
Logger.Debug("Client.SSLConfiguration.EnabledSslProtocols is [{0}]", Client.SSLConfiguration.EnabledSslProtocols.ToString)
|
||||
If pSession.Port = 993 Then
|
||||
Logger.Debug("Port is 993 - So Client.ConnectSSL will be used!")
|
||||
Logger.Debug("Connecting with [STARTTLS/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
Else
|
||||
Logger.Debug("Connecting with [STARTTLS/Connect] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.Connect(pSession.Server, pSession.Port)
|
||||
End If
|
||||
|
||||
|
||||
Client.Connect(pSession.Server, pSession.Port)
|
||||
Logger.Debug("Connection (AUTH_SSLTLS or AUTH_STARTTLS) Successful!")
|
||||
|
||||
Dim oSupportsSTARTTLS As Boolean = SupportsSTARTTLS(Client)
|
||||
Logger.Debug("Server supports STARTTLS: [{0}]", oSupportsSTARTTLS)
|
||||
@@ -219,7 +209,8 @@ Namespace Mail
|
||||
DoSTARTTLS(Client)
|
||||
Logger.Debug("STARTTLS Successful!")
|
||||
Else
|
||||
Throw New ApplicationException("Server does not support STARTTLS on this endpoint.")
|
||||
Logger.Debug("Server does not support STARTTLS. Enabling TLS1.2 instead.")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.Tls12
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -232,11 +223,11 @@ Namespace Mail
|
||||
|
||||
Else
|
||||
Try
|
||||
Logger.Debug("Auth type [{0}]. Using PLAINTEXT connection.", pSession.AuthType)
|
||||
Logger.Debug("Auth type [{0}]. Using PLAINTEXT connection.", Session.AuthType)
|
||||
Client.Connect(pSession.Server, pSession.Port, useSSL:=False)
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type [{0}]!", pSession.AuthType)
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type [{0}]!", Session.AuthType)
|
||||
Logger.Error(ex)
|
||||
|
||||
pSession.Error = ex
|
||||
@@ -247,10 +238,11 @@ Namespace Mail
|
||||
|
||||
Try
|
||||
If pSession.User <> String.Empty Then
|
||||
Logger.Debug("Logging in with user [{0}] and Auth Type [{1}]", pSession.User, pSession.AuthType)
|
||||
Logger.Info("Logging in with user [{0}] and Auth Type [{1}]", pSession.User, pSession.AuthType)
|
||||
|
||||
If pSession.AuthType = AUTH_OAUTH2 Then
|
||||
' Use OAuth2 token
|
||||
' SessionInfo.Password will be the access token that was obtained
|
||||
' in the OAuth2 flow before
|
||||
DoUseBestLogin_OAuth2(Client, pSession)
|
||||
Else
|
||||
DoUseBestLogin_BasicAuth(Client, pSession.User, pSession.Password)
|
||||
@@ -273,10 +265,10 @@ Namespace Mail
|
||||
Public Function DisconnectFromServer() As Boolean
|
||||
Try
|
||||
If Client IsNot Nothing Then
|
||||
Logger.Debug("Closing connection to Server [{0}]...", Session.Server)
|
||||
Logger.Debug("Closing connection to Server [{0}].", Session.Server)
|
||||
DoClose(Client)
|
||||
Session.Connected = False
|
||||
Logger.Debug("Connection to Server [{0}] closed.", Session.Server)
|
||||
Logger.Info("Connection to Server [{0}] closed.", Session.Server)
|
||||
Else
|
||||
Logger.Debug("No connection currently open. Exiting.")
|
||||
End If
|
||||
@@ -305,7 +297,7 @@ Namespace Mail
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function SupportsSTARTTLS(pClient As ClientBase) As Boolean
|
||||
Private Function SupportsSTARTTLS(pClient As ClientBase)
|
||||
If TypeOf pClient Is Smtp Then
|
||||
Return DirectCast(pClient, Smtp).SupportedExtensions.Contains(SmtpExtension.StartTLS)
|
||||
ElseIf TypeOf pClient Is Imap Then
|
||||
@@ -328,32 +320,9 @@ Namespace Mail
|
||||
|
||||
Private Sub DoUseBestLogin_BasicAuth(pClient As ClientBase, pUserName As String, pPassword As String)
|
||||
Logger.Debug("Logging in with Simple Auth")
|
||||
Logger.Debug("Username format: [{0}]", If(pUserName.Contains("@"), "Email format", "Other format"))
|
||||
|
||||
If TypeOf pClient Is Smtp Then
|
||||
Dim smtp = DirectCast(pClient, Smtp)
|
||||
|
||||
' Zeige unterstützte Auth-Methoden (nur Logging, keine Funktionsänderung)
|
||||
Try
|
||||
Dim supportedExtensions = smtp.SupportedExtensions()
|
||||
Logger.Debug("Server supported extensions count: [{0}]", supportedExtensions.Count)
|
||||
If supportedExtensions.Count > 0 Then
|
||||
Logger.Debug("Server supported extensions: [{0}]", String.Join(", ", supportedExtensions.Select(Function(x) x.ToString())))
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Debug("Could not retrieve supported extensions: {0}", ex.Message)
|
||||
End Try
|
||||
|
||||
' Azure Communication Services Detection (nur Logging)
|
||||
If _Session?.Server?.Contains("azurecomm.net") Then
|
||||
Logger.Debug("Azure Communication Services detected")
|
||||
Logger.Debug("Note: Username should be '<endpoint>.communication.azure.com'")
|
||||
Logger.Debug("Note: Password should be the Access Key from Azure Portal")
|
||||
End If
|
||||
|
||||
' Ursprüngliche Funktionalität bleibt unverändert
|
||||
smtp.UseBestLogin(pUserName, pPassword)
|
||||
|
||||
DirectCast(pClient, Smtp).UseBestLogin(pUserName, pPassword)
|
||||
ElseIf TypeOf pClient Is Imap Then
|
||||
DirectCast(pClient, Imap).UseBestLogin(pUserName, pPassword)
|
||||
Else
|
||||
@@ -364,61 +333,16 @@ Namespace Mail
|
||||
Private Sub DoUseBestLogin_OAuth2(pClient As ClientBase, pSession As SessionInfo)
|
||||
Logger.Debug("Logging in with O365 OAuth2")
|
||||
|
||||
Dim oOAuth = New OAuth2(LogConfig, pSession.TenantId, pSession.ClientId, pSession.ClientSecret)
|
||||
Dim oAccessToken = oOAuth.GetAccessToken()
|
||||
|
||||
' Diagnose token shape (delegated vs app-only)
|
||||
Try
|
||||
Dim parts = oAccessToken.Split("."c)
|
||||
If parts.Length = 3 Then
|
||||
Dim payloadJson = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(PadBase64(parts(1))))
|
||||
If payloadJson.Contains("""scp""") Then
|
||||
Logger.Debug("OAuth2 token contains 'scp' (delegated) – IMAP App-only erwartet 'roles'.")
|
||||
ElseIf payloadJson.Contains("""roles""") Then
|
||||
Logger.Debug("OAuth2 token contains 'roles' (application permissions).")
|
||||
Else
|
||||
Logger.Debug("OAuth2 token payload hat weder 'scp' noch 'roles'.")
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Debug("Token-Payload konnte nicht gelesen werden: {0}", ex.Message)
|
||||
End Try
|
||||
|
||||
If TypeOf pClient Is Imap Then
|
||||
Dim i = DirectCast(pClient, Imap)
|
||||
Dim oOAuth = New OAuth2(LogConfig, pSession.TenantId, pSession.ClientId, pSession.ClientSecret)
|
||||
Dim oAccessToken = oOAuth.GetAccessToken()
|
||||
|
||||
' Login mit Hilfsmethode; bei Abbruch explizit SASL XOAUTH2 probieren
|
||||
Try
|
||||
' Direkt versuchen, falls die verwendete Version LoginOAUTH2 unterstützt.
|
||||
i.LoginOAUTH2(pSession.User, oAccessToken)
|
||||
Catch ex As Exception
|
||||
Logger.Warn("LoginOAUTH2 (IMAP) fehlgeschlagen: {0}", ex.Message)
|
||||
Throw
|
||||
End Try
|
||||
ElseIf TypeOf pClient Is Smtp Then
|
||||
Dim s = DirectCast(pClient, Smtp)
|
||||
Try
|
||||
s.LoginOAUTH2(pSession.User, oAccessToken)
|
||||
Catch ex As Exception
|
||||
Logger.Warn("LoginOAUTH2 (SMTP) fehlgeschlagen: {0}", ex.Message)
|
||||
Throw
|
||||
End Try
|
||||
DirectCast(pClient, Imap).LoginOAUTH2(pSession.User, oAccessToken)
|
||||
Else
|
||||
Logger.Error("Unknown session type: [{0}]", pClient.GetType.ToString)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Shared Function PadBase64(input As String) As String
|
||||
' Normalize Base64 URL-safe and pad to multiple of 4
|
||||
If input Is Nothing Then Return String.Empty
|
||||
Dim normalized As String = input.Replace("-", "+").Replace("_", "/")
|
||||
Dim remainder As Integer = normalized.Length Mod 4
|
||||
If remainder > 0 Then
|
||||
normalized &= New String("="c, 4 - remainder)
|
||||
End If
|
||||
Return normalized
|
||||
End Function
|
||||
|
||||
Private Sub DoSTARTTLS(pClient As ClientBase)
|
||||
If TypeOf pClient Is Smtp Then
|
||||
DirectCast(pClient, Smtp).StartTLS()
|
||||
@@ -430,13 +354,10 @@ Namespace Mail
|
||||
End Sub
|
||||
|
||||
Private Sub Session_ServerCertificateValidate(sender As Object, e As ServerCertificateValidateEventArgs)
|
||||
Logger.Debug("Certificate validation for: [{0}]", e.Certificate?.Subject)
|
||||
Logger.Debug("SSL Policy Errors: [{0}]", e.SslPolicyErrors)
|
||||
|
||||
' i dont know why it works but it does
|
||||
If (e.SslPolicyErrors And Not SMTP_IGNORED_ERRORS) = SslPolicyErrors.None Then
|
||||
e.IsValid = True
|
||||
Else
|
||||
Logger.Warn("Certificate validation failed. Errors: [{0}]", e.SslPolicyErrors)
|
||||
e.IsValid = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -1,97 +1,58 @@
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Messaging.Mail.MailSession
|
||||
Imports Limilabs.Client.IMAP
|
||||
Imports Microsoft.Identity.Client
|
||||
|
||||
Namespace Mail
|
||||
Public Class OAuth2
|
||||
Inherits BaseClass
|
||||
Public Class OAuth2
|
||||
Inherits BaseClass
|
||||
|
||||
Private ReadOnly _tenantId As String
|
||||
Private ReadOnly _clientId As String
|
||||
Private ReadOnly _clientSecret As String
|
||||
Private ReadOnly TenantId As String
|
||||
Private ReadOnly ClientId As String
|
||||
Private ReadOnly ClientSecret As String
|
||||
|
||||
Public Const O365_SERVER_IMAP As String = "outlook.office365.com"
|
||||
Public Const O365_SERVER_SMTP As String = "smtp-mail.outlook.com"
|
||||
Public Const O365_SCOPE As String = "https://outlook.office365.com/.default"
|
||||
Public Const O365_AUTHORITY_PREFIX As String = "https://login.microsoftonline.com/"
|
||||
Public Const O365_SCOPE = "https://outlook.office365.com/.default"
|
||||
Public Const O365_SERVER = "outlook.office365.com"
|
||||
|
||||
Public Sub New(pLogConfig As LogConfig, tenantId As String, clientId As String, clientSecret As String)
|
||||
MyBase.New(pLogConfig)
|
||||
_tenantId = tenantId
|
||||
_clientId = clientId
|
||||
_clientSecret = clientSecret
|
||||
End Sub
|
||||
Private _AccessToken As String
|
||||
Public ReadOnly Property AccessToken
|
||||
Get
|
||||
Return _AccessToken
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Function GetAccessToken() As String
|
||||
' input hardening and better diagnostics
|
||||
Dim tenantId = If(_tenantId, String.Empty).Trim()
|
||||
Dim clientId = If(_clientId, String.Empty).Trim()
|
||||
Dim clientSecret = If(_clientSecret, String.Empty).Trim()
|
||||
Public Sub New(pLogConfig As LogConfig, pTenantId As String, pClientId As String, pClientSecret As String)
|
||||
MyBase.New(pLogConfig)
|
||||
TenantId = pTenantId
|
||||
ClientId = pClientId
|
||||
ClientSecret = pClientSecret
|
||||
End Sub
|
||||
|
||||
If String.IsNullOrWhiteSpace(tenantId) Then
|
||||
Logger.Error("OAuth2: tenantId is empty.")
|
||||
Throw New ArgumentException("tenantId is empty")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(clientId) Then
|
||||
Logger.Error("OAuth2: clientId is empty.")
|
||||
Throw New ArgumentException("clientId is empty")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(clientSecret) Then
|
||||
Logger.Error("OAuth2: clientSecret is empty.")
|
||||
Throw New ArgumentException("clientSecret is empty")
|
||||
End If
|
||||
Public Function GetAccessToken() As String
|
||||
Logger.Debug("Fetching Access Token..")
|
||||
|
||||
' common misconfiguration: using the Secret ID (GUID) instead of the Secret VALUE
|
||||
Dim tmpGuid As Guid
|
||||
If Guid.TryParse(clientSecret, tmpGuid) Then
|
||||
Logger.Error("OAuth2: clientSecret looks like a GUID (likely the secret ID). Use the secret VALUE instead.")
|
||||
Throw New ApplicationException("Invalid client secret: looks like Secret ID (GUID), not the secret value.")
|
||||
End If
|
||||
Try
|
||||
' Create the application, which is defined in
|
||||
' Microsoft.Identity.Client
|
||||
Dim oApp = ConfidentialClientApplicationBuilder.
|
||||
Create(ClientId).
|
||||
WithTenantId(TenantId).
|
||||
WithClientSecret(ClientSecret).
|
||||
Build()
|
||||
|
||||
Try
|
||||
Dim authority = O365_AUTHORITY_PREFIX & tenantId
|
||||
' Request an access token
|
||||
Dim oScopes = New List(Of String) From {O365_SCOPE}
|
||||
Dim oResult = oApp.
|
||||
AcquireTokenForClient(oScopes).
|
||||
ExecuteAsync().Result
|
||||
|
||||
Dim app = ConfidentialClientApplicationBuilder.Create(clientId).
|
||||
WithClientSecret(clientSecret).
|
||||
WithAuthority(authority).
|
||||
Build()
|
||||
Logger.Debug("Access Token fetched.")
|
||||
|
||||
Dim scopes = New String() {O365_SCOPE}
|
||||
Dim result = app.AcquireTokenForClient(scopes).ExecuteAsync().GetAwaiter().GetResult()
|
||||
|
||||
Logger.Info("OAuth2 token acquired for tenant {0}. ExpiresOn={1:u}", tenantId, result.ExpiresOn.UtcDateTime)
|
||||
Return result.AccessToken
|
||||
Catch ex As MsalServiceException
|
||||
' richer diagnostics without depending on specific MSAL version members
|
||||
Logger.Error("MSAL service error. Code={0}. Message={1}", ex.ErrorCode, ex.Message)
|
||||
|
||||
' Try to log StatusCode, ResponseBody if available (via reflection to avoid version dependency)
|
||||
Try
|
||||
Dim t = GetType(MsalServiceException)
|
||||
Dim scProp = t.GetProperty("StatusCode")
|
||||
If scProp IsNot Nothing Then
|
||||
Dim sc = scProp.GetValue(ex, Nothing)
|
||||
If sc IsNot Nothing Then Logger.Error("MSAL StatusCode={0}", sc)
|
||||
End If
|
||||
Dim rbProp = t.GetProperty("ResponseBody")
|
||||
If rbProp IsNot Nothing Then
|
||||
Dim rb = rbProp.GetValue(ex, Nothing)
|
||||
If rb IsNot Nothing Then Logger.Error("MSAL ResponseBody={0}", rb)
|
||||
End If
|
||||
Dim ciProp = t.GetProperty("Claims")
|
||||
If ciProp IsNot Nothing Then
|
||||
Dim claims = ciProp.GetValue(ex, Nothing)
|
||||
If claims IsNot Nothing AndAlso claims.ToString().Length > 0 Then Logger.Error("MSAL Claims={0}", claims)
|
||||
End If
|
||||
Catch
|
||||
' ignore reflection diagnostics failures
|
||||
End Try
|
||||
|
||||
Throw
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Throw
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
Return oResult.AccessToken
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Could not request access token!")
|
||||
Logger.Error(ex)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
@@ -44,11 +44,17 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.9.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Mail">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\Limilabs\Mail.dll</HintPath>
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\Limilabs\Mail.dll\Mail.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Identity.Client, Version=4.55.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
|
||||
@@ -137,12 +143,6 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Base\Base.vbproj">
|
||||
<Project>{6ea0c51f-c2b1-4462-8198-3de0b32b74f8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="MailLicense.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.2.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.2.0.0")>
|
||||
<Assembly: AssemblyVersion("2.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.0.0.0")>
|
||||
|
||||
2
Messaging/My Project/Settings.Designer.vb
generated
2
Messaging/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Identity.Client" version="4.55.0" targetFramework="net462" />
|
||||
<package id="Microsoft.IdentityModel.Abstractions" version="6.22.0" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
|
||||
@@ -1,152 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>DigitalData.Modules.Base</RootNamespace>
|
||||
<AssemblyName>DigitalData.Modules.Base</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>Windows</MyType>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.Base.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.Base.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Base\BaseClass.vb" />
|
||||
<Compile Include="Base\BaseUtils.vb" />
|
||||
<Compile Include="ECM\ECM.vb" />
|
||||
<Compile Include="Encryption\Compression.vb" />
|
||||
<Compile Include="Encryption\Encryption.vb" />
|
||||
<Compile Include="Encryption\EncryptionLegacy.vb" />
|
||||
<Compile Include="DatabaseEx.vb" />
|
||||
<Compile Include="FilesystemEx.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcher.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcherFilters.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcherProperties.vb" />
|
||||
<Compile Include="IDB\Constants.vb" />
|
||||
<Compile Include="MimeEx.vb" />
|
||||
<Compile Include="StringFunctions.vb" />
|
||||
<Compile Include="WindowsEx.vb" />
|
||||
<Compile Include="ModuleExtensions.vb" />
|
||||
<Compile Include="FileEx.vb" />
|
||||
<Compile Include="NativeMethods.vb" />
|
||||
<Compile Include="ObjectEx.vb" />
|
||||
<Compile Include="GraphicsEx.vb" />
|
||||
<Compile Include="LanguageEx.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Application.myapp</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Resources.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Settings.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="ScreenEx.vb" />
|
||||
<Compile Include="StringEx.vb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="My Project\Application.myapp">
|
||||
<Generator>MyApplicationCodeGenerator</Generator>
|
||||
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="My Project\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="README.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,163 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- saved from url=(0014)about:internet -->
|
||||
|
||||
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="NuGetUpgradeReportTitle">
|
||||
NuGetMigrationLog
|
||||
</title><style>
|
||||
|
||||
/* Body style, for the entire document */
|
||||
body
|
||||
{
|
||||
background: #F3F3F4;
|
||||
color: #1E1E1F;
|
||||
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||
font-size: 12pt;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header1 style, used for the main title */
|
||||
h1
|
||||
{
|
||||
padding: 10px 0px 10px 10px;
|
||||
font-size: 21pt;
|
||||
background-color: #E2E2E2;
|
||||
border-bottom: 1px #C1C1C2 solid;
|
||||
color: #201F20;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Header2 style, used for "Overview" and other sections */
|
||||
h2
|
||||
{
|
||||
font-size: 18pt;
|
||||
font-weight: normal;
|
||||
padding: 15px 0 5px 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header3 style, used for sub-sections, such as project name */
|
||||
h3
|
||||
{
|
||||
font-weight: normal;
|
||||
font-size: 15pt;
|
||||
margin: 0;
|
||||
padding: 15px 0 5px 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.info-text
|
||||
{
|
||||
margin: 0px 0 0.75em 0;
|
||||
}
|
||||
|
||||
/* Color all hyperlinks one color */
|
||||
a
|
||||
{
|
||||
color: #1382CE;
|
||||
}
|
||||
|
||||
/* Table styles */
|
||||
table
|
||||
{
|
||||
border-spacing: 0 0;
|
||||
border-collapse: collapse;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
background: #E7E7E8;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
padding: 3px 6px 3px 6px;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
vertical-align: top;
|
||||
padding: 3px 6px 5px 5px;
|
||||
margin: 0px;
|
||||
border: 1px solid #E7E7E8;
|
||||
background: #F7F7F8;
|
||||
}
|
||||
|
||||
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
|
||||
.localLink
|
||||
{
|
||||
color: #1E1E1F;
|
||||
background: #EEEEED;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.localLink:hover
|
||||
{
|
||||
color: #1382CE;
|
||||
background: #FFFF99;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.issueCell
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.packageIssue
|
||||
{
|
||||
margin-left: 25px;
|
||||
}
|
||||
|
||||
/* Padding around the content after the h1 */
|
||||
#content
|
||||
{
|
||||
padding: 0px 20px 20px 20px;
|
||||
}
|
||||
|
||||
.issues table
|
||||
{
|
||||
width: 97%;
|
||||
}
|
||||
|
||||
/* All Icons */
|
||||
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
|
||||
{
|
||||
min-width:18px;
|
||||
min-height:18px;
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
}
|
||||
|
||||
.IconSuccessEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
.IconInfoEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
.IconWarningEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
.IconErrorEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
</style></head><body><h1>
|
||||
NuGet Migration Report - Base</h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div class="info-text">Migration to PackageReference was completed successfully. Please build and run your solution to verify that all packages are available.</div><div class="info-text">
|
||||
If you run into any problems, have feedback, questions, or concerns, please
|
||||
<a href="https://github.com/NuGet/Home/issues/">file an issue on the NuGet GitHub repository.</a></div><div class="info-text">
|
||||
Changed files and this report have been backed up here:
|
||||
<a href="E:\SchreiberM\Visual Studio\GIT\2_DLL Projekte\DDModules\MigrationBackup\56f77a37\Base">E:\SchreiberM\Visual Studio\GIT\2_DLL Projekte\DDModules\MigrationBackup\56f77a37\Base</a></div><div class="info-text"><a href="https://aka.ms/nuget-pc2pr-migrator-rollback">Help me rollback to packages.config</a></div><h2 _locID="PackagesTitle">Packages processed</h2><h3 _locID="IncludePackagesTitle">Top-level dependencies:</h3><div class="issues"><table><tr><th class="issueCell">Package Id</th><th>Version</th></tr><tr><td class="issueCell"><span>NLog</span></td><td><span>
|
||||
v5.0.5</span></td></tr><tr><td class="issueCell"><span>NuGet.CommandLine</span></td><td><span>
|
||||
v6.13.2</span></td></tr></table></div><p /><h3 _locID="IncludePackagesTitle">Transitive dependencies:</h3><div class="issues"><table><tr><th class="issueCell">Package Id</th><th>Version</th></tr><tr><td class="issueCell">
|
||||
No transitive dependencies found.
|
||||
</td><td /></tr></table></div><h2 _locID="IssuesTitle">Package compatibility issues</h2><div class="issues"><table><tr><th /><th class="issueCell" _locID="DescriptionTableHeader">Description</th></tr><tr><td class="IconInfoEncoded" /><td class="issueCell">
|
||||
No issues were found.
|
||||
</td></tr></table></div></div></body></html>
|
||||
15
Modules.sln
15
Modules.sln
@@ -16,9 +16,6 @@ EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Interfaces", "Interfaces\Interfaces.vbproj", "{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Jobs", "Jobs\Jobs.vbproj", "{39EC839A-3C30-4922-A41E-6B09D1DDE5C3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64} = {AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "License", "License\License.vbproj", "{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}"
|
||||
EndProject
|
||||
@@ -36,12 +33,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ZooFlow", "ZooFlow\ZooFlow.
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Messaging", "Messaging\Messaging.vbproj", "{AF664D85-0A4B-4BAB-A2F8-83110C06553A}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Database.Test", "Database.Test\Database.Test.vbproj", "{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Filesystem", "Filesystem\Filesystem.vbproj", "{991D0231-4623-496D-8BD0-9CA906029CBC}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMIService", "..\DDMonorepo\Service.EDMIService\EDMIService.vbproj", "{A8C3F298-76AB-4359-AB3C-986E313B4336}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -108,18 +101,10 @@ Global
|
||||
{AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.4.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.4.0.0")>
|
||||
<Assembly: AssemblyVersion("1.3.1.0")>
|
||||
<Assembly: AssemblyFileVersion("1.3.1.0")>
|
||||
|
||||
@@ -20,7 +20,6 @@ Public Class ClassPatterns
|
||||
' Complex patterns that rely on a datasource like a Database or Windream
|
||||
Public Const PATTERN_WMI = "WMI"
|
||||
Public Const PATTERN_CTRL = "CTRL"
|
||||
Public Const PATTERN_TBCOL = "TBCOL"
|
||||
' Simple patterns that only rely on .NET functions
|
||||
Public Const PATTERN_INT = "INT"
|
||||
' Simple patterns that rely on Data from the TBDD_USER table
|
||||
@@ -64,8 +63,8 @@ Public Class ClassPatterns
|
||||
Private ReadOnly _LogConfig As LogConfig
|
||||
|
||||
Private ReadOnly _Regex As Regex = New Regex("{#(\w+)#([\w\s_-]+)}+")
|
||||
Private ReadOnly _AllPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_TBCOL, PATTERN_USER, PATTERN_INT, PATTERN_WMDOCID, PATTERN_IDBOBJID}
|
||||
Private ReadOnly _ComplexPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_TBCOL}
|
||||
Private ReadOnly _AllPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_USER, PATTERN_INT, PATTERN_WMDOCID, PATTERN_IDBOBJID}
|
||||
Private ReadOnly _ComplexPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL}
|
||||
Private ReadOnly _SimplePatterns As New List(Of String) From {PATTERN_USER, PATTERN_INT}
|
||||
|
||||
''' <summary>
|
||||
|
||||
@@ -56,8 +56,12 @@
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.ZooFlow, Version=1.3.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\ZooFlow\bin\Debug\DigitalData.Modules.ZooFlow.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WINDREAMLib">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -144,12 +148,6 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ZooFlow\ZooFlow.vbproj">
|
||||
<Project>{81cac44f-3711-4c8f-ae98-e02a7448782a}</Project>
|
||||
<Name>ZooFlow</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
|
||||
@@ -6,38 +6,6 @@
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.1" newVersion="6.0.0.1" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
|
||||
|
||||
@@ -44,18 +44,13 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Office.Interop.Outlook">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\Office\Microsoft.Office.Interop.Outlook.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OFFICE">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\Office\OFFICE.DLL</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
@@ -146,12 +141,26 @@
|
||||
<Project>{6ea0c51f-c2b1-4462-8198-3de0b32b74f8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Include="Microsoft.Office.Core">
|
||||
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
|
||||
<VersionMajor>2</VersionMajor>
|
||||
<VersionMinor>8</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>primary</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
<COMReference Include="Microsoft.Office.Interop.Outlook">
|
||||
<Guid>{00062FFF-0000-0000-C000-000000000046}</Guid>
|
||||
<VersionMajor>9</VersionMajor>
|
||||
<VersionMinor>6</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>primary</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
<COMReference Include="stdole">
|
||||
<Guid>{00020430-0000-0000-C000-000000000046}</Guid>
|
||||
<VersionMajor>2</VersionMajor>
|
||||
|
||||
@@ -183,6 +183,7 @@ Public Class Helpers
|
||||
Return Convert.ToDateTime(pValue)
|
||||
End If
|
||||
Case INDEX_TYPE_FLOAT
|
||||
pValue = pValue.Replace(".", ",")
|
||||
If pValue = DELETE_ATTRIBUTE_VALUE Then
|
||||
Return Nothing
|
||||
Else
|
||||
|
||||
@@ -182,18 +182,7 @@ Public Class Windream
|
||||
_sessionPassword = SessionPassword
|
||||
_sessionDomain = SessionDomain
|
||||
End Sub
|
||||
Public Sub Disconnect()
|
||||
Try
|
||||
If Session IsNot Nothing AndAlso Session.aLoggedin Then
|
||||
Session.Logout()
|
||||
_logger.Info("Session successfully logged out.")
|
||||
Else
|
||||
_logger.Info("No active session to log out.")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex, "Error while logging out session")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Function GetCleanedPath(Path As String) As String
|
||||
Return Regex.Replace(Path, Constants.REGEX_CLEAN_FILENAME, String.Empty)
|
||||
End Function
|
||||
@@ -711,7 +700,7 @@ Public Class Windream
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function NewFileStream(ByVal FilenameSource As String, ByVal FilenameTarget As String, ByVal WMObjecttypeName As String) As Boolean
|
||||
Public Function NewFileStream(ByVal FilenameSource As String, ByVal FilenameTarget As String, ByVal WMObjecttypeName As String, pisGUI As Boolean) As Boolean
|
||||
|
||||
NewDocumentID = 0
|
||||
|
||||
@@ -723,7 +712,7 @@ Public Class Windream
|
||||
|
||||
FilenameTarget = GetNormalizedPath(FilenameTarget, True)
|
||||
|
||||
_logger.Debug($"Preparing to stream file from {FilenameSource} to {FilenameTarget}")
|
||||
_logger.Debug($"Preparing to stream file from [{FilenameSource}] to [{FilenameTarget}]")
|
||||
|
||||
Dim oWMObject As IWMObject6 = Nothing
|
||||
Dim oFileIO As WMFileIO
|
||||
@@ -736,9 +725,16 @@ Public Class Windream
|
||||
|
||||
Try
|
||||
' GetNewWMObjectFS already locks the WMObject
|
||||
_logger.Debug("Creating WMObject for file {0}", FilenameTarget)
|
||||
_logger.Debug("Creating WMObject for file [{0}]", FilenameTarget)
|
||||
oWMObject = Session.GetNewWMObjectFS(WMEntityDocument, FilenameTarget, WMObjectEditModeObject)
|
||||
Catch ex As Exception
|
||||
If ex.Message.Contains("Filename exists!") Then
|
||||
Dim oMsg = $"Could not create a windream - object - A folder or file with the same name already exists in the folder [{oTargetDrive}]"
|
||||
_logger.Warn(oMsg)
|
||||
If pisGUI = True Then
|
||||
MsgBox(oMsg, MsgBoxStyle.Critical, "Error in creating windream-object")
|
||||
End If
|
||||
End If
|
||||
_logger.Error(ex, "WMObject could not be created")
|
||||
Return False
|
||||
End Try
|
||||
|
||||
@@ -44,24 +44,28 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WINDREAMLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.8.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WINDREAMLib">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WMCNNCTDLLLib">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WMCNNCTDLLLib.dll</HintPath>
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMCNNCTDLLLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WMOSRCHLib">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WMOSRCHLib.dll</HintPath>
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOSRCHLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WMOTOOLLib">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WMOTOOLLib.dll</HintPath>
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -136,12 +140,6 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Base\Base.vbproj">
|
||||
<Project>{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Include="WMOBRWSLib">
|
||||
<Guid>{25B51999-6DCA-11D4-B815-00104BB52DEA}</Guid>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
</packages>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user