我一直致力于将 Secugen 指纹识别器和 API 实施到无家可归者收容所的 ASP.NET 网站中,这让我抓狂。我正在使用 FDx SDK Pro for Windows API,并且我有自定义 COM 组件(通过 OCX 文件),可将 activeX 控件导入到我的工具箱中。但是,只有当我创建 Windows 应用程序然后创建 Windows 窗体时,才能使用这些控件。我需要将这些控件放在网络表单中。如果我尝试将它们放入网络表单中,activeX 工具会变灰并且不允许我这样做。有一个 .htm 示例,它正是我正在寻找的,所以我知道这是可能的,但我只是无法说出依赖项是什么。我只是不熟悉 .NET 和程序集库。这是 API 附带的自述文件,其中包含它所拥有的不同文件。我不确定是否必须先创建一个 Windows 表单,然后将其作为对象放入我的网站中。我尝试将“SecuGen.FdxSdkPro.Windows.dll”文件放入我的 bin 文件夹中,但是当我运行它时,我在运行它时收到以下错误。任何意见都将不胜感激,并让我知道上传 .htm 示例或提供代码是否有用。
编译错误
Could not load file or assembly 'SecuGen.FDxSDKPro.Windows' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.BadImageFormatException: Could not load file or assembly 'SecuGen.FDxSDKPro.Windows' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Assembly Load Trace: The following information can be helpful to determine why the assembly 'SecuGen.FDxSDKPro.Windows' could not be loaded.
=== Pre-bind state information ===
LOG: DisplayName = SecuGen.FDxSDKPro.Windows
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: SecuGen.FDxSDKPro.Windows | Domain ID: 5
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///f:/Documents/GitHub/Homeless_Intake/WebSite1/
LOG: Initial PrivatePath = f:\Documents\GitHub\Homeless_Intake\WebSite1\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: f:\Documents\GitHub\Homeless_Intake\WebSite1\web.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/Farr/AppData/Local/Temp/Temporary ASP.NET Files/website1/66e0b9e8/94cdddbc/SecuGen.FDxSDKPro.Windows.DLL.
LOG: Attempting download of new URL file:///C:/Users/Farr/AppData/Local/Temp/Temporary ASP.NET Files/website1/66e0b9e8/94cdddbc/SecuGen.FDxSDKPro.Windows/SecuGen.FDxSDKPro.Windows.DLL.
LOG: Attempting download of new URL file:///f:/Documents/GitHub/Homeless_Intake/WebSite1/bin/SecuGen.FDxSDKPro.Windows.DLL.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.
Stack Trace:
[BadImageFormatException: Could not load file or assembly 'SecuGen.FDxSDKPro.Windows' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
System.Reflection.Assembly.Load(String assemblyString) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
[ConfigurationErrorsException: Could not load file or assembly 'SecuGen.FDxSDKPro.Windows' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516
[HttpException (0x80004005): Could not load file or assembly 'SecuGen.FDxSDKPro.Windows' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9915300
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +456
适用于 Windows 的 FDx SDK Pro 版权所有 (C) 1998-2014 SecuGen Corporation
版本:3.7 日期:2013 年 11 月
日期:2009年7月
版本:3.53 日期:2009年1月
SecuGen USB 端口设备(FDU02、FDU03、FDU04、FDU05 或 U20): - IBM 兼容 PC 486 或更高版本 - 光盘驱动器 - 1 个 USB 2.0 端口 - 64MB 内存 - 80MB可用硬盘空间 - Microsoft Windows 98 SE、Windows ME、Windows 2000/XP/2003、Windows Vista、 Windows 7,8,8.1
Windows系统目录 - sgfplib.dll(FDx SDK Pro主模块) - sgfpamx.dll(FDx SDK Pro算法模块,MINEX认证)
Bin\i386目录 - sgfplib.dll - sgfpamx.dll -sgfplibx.ocx
Bin\x64 目录 - sgfplib.dll - sgfpamx.dll -sgfplibx.ocx
公司目录 -sgfplib.h
Lib\i386目录 - sgfplib.lib
Lib\x64 目录 - sgfplib.lib
样本目录 - 用 Visual Studio 2005 编写的图像捕获示例 - 用 Visual Studio 2005 编写的匹配示例 - 用 Visual Studio 2005 编写的 ANSI-378 模板的匹配示例 - Visual Studio 2005 中 ISO 19794-2 模板的匹配示例
DotNet\Bin\i386 目录 - SecuGen.FdxSdkPro.Windows.dll(FDx SDK Pro .NET x86 库)
DotNet\Bin\x64 目录 - SecuGen.FdxSdkPro.Windows.dll(FDx SDK Pro .NET x64 库)
DotNet\样本目录 - 用 C# 编写的匹配示例 (Visual Studio 2005) - 显示用 C# 编写的 ANSI 378 模板用法的匹配示例 (Visual Studio 2005) - 用 Visual basic .NET (Visual Studio 2005) 编写的匹配示例
确保您的应用程序是在 32 位平台目标中构建的
我不小心有两个帐户。首先,您必须确保将 SDK 安装在正确的位服务器上。我最终采用了 active-x 控件并将它们嵌入到 Web 表单中。然后,当捕获指纹并将其转换为字符串并通过ajax发送到服务器时。
然后我遇到了一个问题,SDK 没有正确解密字符串以进行比较的功能。我联系了 Secugen,他们非常乐意将我的请求转给工程师,然后工程师向我提供了另一个包含缺少功能的 .dll 文件。有一天我可能会在 GitHub 上发布一些源代码。当我这样做时,我会用链接更新它!
如果您在 Windows 应用程序中遇到此问题,尤其是在生产中,请检查是否安装了 microsoft c++ 可再发行组件。必须安装 2015,它才可以工作。