2017-02-01 6 views
1

Ich überprüfe die Ablaufverfolgung, die ich von einer SQL Server-DB erhalten, der Datentyp ist varbinary (MAX), aber ich erhalte diese Ausnahme und ich habe keine Vorstellung davon, was es auch sein mag, lasse ich Sie den Code der Abfrage, wo ich die Daten bringen und das Verfahren es verarbeitetFehler bei der Validierung DigitalPersona SDK Excepción von HRESULT: 0xFFFFFFE3 (SDK-Fehler = -29)

Ausnahme:

Ausnahme von HRESULT: 0xFFFFFFE3

Log aus der Ausnahme (Diese in Spanisch sein):

Consulte el final de este mensaje para obtener más detalles sobre cómo invocar a la depuración 
Just-In-Time (JIT) en lugar de a este cuadro de diálogo. 

************** Texto de la excepción ************** 
DPFP.Error.SDKException: Event Handler has generated an Exception ---> System.Runtime.InteropServices.COMException: Excepción de HRESULT: 0xFFFFFFE3 
    en DPFP.Verification.Verification.MC_verifyFeaturesEx(SafeHandle mcContext, Int32 templateSize, Byte[] templatePt, Int32 featureSetSize, Byte[] featureSet, Int32 reserved0, IntPtr reserved1, IntPtr reserved2, IntPtr reserved3, Double& achievedFar) 
    en DPFP.Verification.Verification.Verify(FeatureSet FeatureSet, Template Template, Int32 FARRequested) 
    en DPFP.Verification.Verification.Verify(FeatureSet FeatureSet, Template Template, Result& Result) 
    en VerifyEnrollerApp.VerifyFinger.Process(Sample Sample) en c:\users\desarrollo 02\documents\visual studio 2012\Projects\VerifyEnrollerApp\VerifyEnrollerApp\Form1.vb:línea 322 
    en VerifyEnrollerApp.VerifyFinger.OnComplete(Object Capture, String ReaderSerialNumber, Sample Sample) en c:\users\desarrollo 02\documents\visual studio 2012\Projects\VerifyEnrollerApp\VerifyEnrollerApp\Form1.vb:línea 246 
    en DPFP.Capture.Capture.MessageReceived(Message& m) 
    --- Fin del seguimiento de la pila de la excepción interna --- 
    en DPFP.Capture.Capture.MessageReceived(Message& m) 
    en DPFP.Capture.Capture.MessageEvents.MessageWindow.WndProc(Message& m) 


************** Ensamblados cargados ************** 
mscorlib 
    Versión del ensamblado: 4.0.0.0 
    Versión Win32: 4.6.1087.0 built by: NETFXREL4STAGE 
    Código base: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll 
---------------------------------------- 
Microsoft.VisualStudio.HostingProcess.Utilities 
    Versión del ensamblado: 11.0.0.0 
    Versión Win32: 11.0.50727.1 
    Código base: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.HostingProcess.Utilities/11.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.HostingProcess.Utilities.dll 
---------------------------------------- 
System.Windows.Forms 
    Versión del ensamblado: 4.0.0.0 
    Versión Win32: 4.6.1087.0 built by: NETFXREL4STAGE 
    Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll 
---------------------------------------- 

Select auf die Datenbank

Private Template As DPFP.Template 
Public Function CargarHuella() 
     Dim conexion As New SqlConnection(Cadena_Conexion) 
     Dim a As Byte() 
     Dim Result As String = "" 
     Dim sql As String 
     Try 

      conexion.Open() 
      sql = "SELECT H_1 FROM HUELLAS WHERE H_Nit_ID = '11' AND H_TypeDocument_ID = '1' AND H_Document_ID = '1032494911'" 

     Dim cmd As New SqlCommand(sql, conexion) 

     Dim reader As SqlDataReader = cmd.ExecuteReader() 

     If reader.Read Then 
      a = reader.GetValue(0) 
     End If 
      reader.Close() 
      cmd.Dispose() 
      conexion.Dispose() 

      Dim str As New MemoryStream 
      str = New MemoryStream(a) 'Convertirmos los bites en Memory 

      Dim template As New DPFP.Template(str) 'Volvemos el Memory en Template para verificar 

      CargarTemplate(template) 

      Result = "Exito" 
     Catch ex As Exception 
      Result = "Error: " & ex.ToString 
     End Try 

     Return Result 
    End Function 

Protected Sub CargarTemplate(ByVal template As DPFP.Template) 
     If Me.TXTMensajes.InvokeRequired Then 
      Dim d As New AddTemplateCallBack(AddressOf CargarTemplate) 
      Me.Invoke(d, New Object() {template}) 
     Else 
      Me.Template = template 
     End If 
    End Sub 

Verifikationsprozess

Private Verificator As DPFP.Verification.Verification  
Protected Sub ProcessSample(ByVal Sample As DPFP.Sample) 
      DibujarMapa(Sample) 

      Dim caracteristicas As DPFP.FeatureSet = ExtraerCaracteristicas(Sample, DPFP.Processing.DataPurpose.Enrollment) 

      If (Not caracteristicas Is Nothing) Then 
       ' Comparamos las caracteristicas de la huella tomada con las del template que tenemos 
       Dim result As DPFP.Verification.Verification.Result = New DPFP.Verification.Verification.Result() 
       Verificator.Verify(caracteristicas, Template, result) '<----HERE IS WHERE THE EXCEPTION IS SHOW 
       If result.Verified Then 
        SendMensaje("Ok", "Ok", 3) 
       Else 
        SendMensaje("KO", "KO", 1) 
       End If 
      End If 
     End Sub 

Was kann scheitern oder was scheitere ich?

PD:. Es tut mir leid für mein schlechtes Englisch :(

Antwort

0

SOLUTION

Ok ich es in der folgenden Art und Weise gelöst, werde ich es zuerst erklären

Anscheinend musste die extrahierten Features als neues Objekt instanziieren, ich krabbelte mit einem try-catch, um den vom SDK ausgegebenen Fehlercode auf den fehlgeschlagenen Prozess zu bekommen, der Fehler ist der -29 und in der Dokumentation wird erklärt, dass es whe ist n es ist ein Fehler in den Funktionen und kann nicht korrekt konvertiert werden Ich lasse den Code mit der Korrektur, es funktioniert perfekt für mich.

''' <summary> 
''' Todo el proceso que se encarga de validar la captura de la huella 
''' </summary> 
''' <param name="Sample"></param> 
''' <remarks></remarks> 
Protected Sub ProcessSample(ByVal Sample As DPFP.Sample) 
    Try 
     DibujarMapa(Sample) 

     Dim caracteristicas As DPFP.FeatureSet = New DPFP.FeatureSet '<---- I added this line and ready, it was fixed 
     caracteristicas = ExtraerCaracteristicas(Sample, DPFP.Processing.DataPurpose.Verification) 

     If (Not caracteristicas Is Nothing) Then 
      ' Comparamos las caracteristicas de la huella tomada con las del template que tenemos 
      Dim result As DPFP.Verification.Verification.Result = New DPFP.Verification.Verification.Result() 
      CodesErrors.GetTypeCode() 
      Verificator.Verify(caracteristicas, Template, result) 
      If result.Verified Then 
       Huella = True 
       UpdateCalidad("Mensaje: " & vbCrLf & vbCrLf & "Huella verificada") 
       SendMensaje("Ok", "Ok...", 3) 
      Else 
       Huella = False 
       UpdateCalidad("Mensaje: " & vbCrLf & vbCrLf & "Huella no coincide") 
       SendMensaje("KO", "KO...", 1) 
      End If 
     End If 
    Catch ex As Exception 
     If ex.HResult = -29 Then '<-- This is the error code from de SDK exception 
      SendMensaje("Lo sentimos, ocurrió un error durante la validación de la huella." & vbCrLf & vbCrLf & "• Message: 'Invalid Feature Set Type'" & vbCrLf & "• Exception Code: " & ex.HResult, "Disculpenos :(- Error Número (" & ex.HResult & ")", 1) 
     Else 
      SendMensaje("• Exception Message: " & ex.Message & vbCrLf & vbCrLf & "• Exception Code: " & ex.HResult, "Error al Verificar", 1) 
     End If 
    End Try 

End Sub 
Verwandte Themen