C_GetSlotList 从 IIS 而非 IIS Express 调用时失败
C_GetSlotList Failing when called from IIS but not from IIS express
所以我有这个 c# 网络服务,它最终通过位于 system32 文件夹中的一些智能卡 USB 驱动程序从德国 Elster 工具包 (Eric) 调用 C_GetSlotList() 方法。
我的计算机服务器中有一张智能卡。当我在 IIS Express 中托管我的服务时,一切正常,但在 IIS 中却没有。可能是什么问题呢?是否有东西阻止 IIS 访问驱动程序?我确保我正在使用的应用程序池的标识具有管理员权限。
我正在使用 Windows 7 professional,这是我得到的日志类型:
2016-10-18 15:16:58,144560 INFO: esigner cryptokiVersion = 02.14
2016-10-18 15:16:58,144560 INFO: esigner manufacturerID = A.E.T. Europe B.V.
2016-10-18 15:17:01,244870 ERROR: esigner error calling C_GetSlotList()
2016-10-18 15:17:01,244870 ERROR: esigner rv = 00000006
2016-10-18 15:17:01,244870 ERROR: esigner ulSlotCount = 0
2016-10-18 15:17:01,244870 ERROR: esigner pkcs11_init() failed
2016-10-18 15:17:01,245870 INFO: esigner ENGINE_set_default_RSA(0436CC30) = returned 0
2016-10-18 15:17:01,245870 INFO: esigner esiclGetToken() = end critical section
将 IIS 应用程序池标识更改为 LocalService 通常会有所帮助。不要问我为什么:)
所以我有这个 c# 网络服务,它最终通过位于 system32 文件夹中的一些智能卡 USB 驱动程序从德国 Elster 工具包 (Eric) 调用 C_GetSlotList() 方法。 我的计算机服务器中有一张智能卡。当我在 IIS Express 中托管我的服务时,一切正常,但在 IIS 中却没有。可能是什么问题呢?是否有东西阻止 IIS 访问驱动程序?我确保我正在使用的应用程序池的标识具有管理员权限。 我正在使用 Windows 7 professional,这是我得到的日志类型:
2016-10-18 15:16:58,144560 INFO: esigner cryptokiVersion = 02.14
2016-10-18 15:16:58,144560 INFO: esigner manufacturerID = A.E.T. Europe B.V.
2016-10-18 15:17:01,244870 ERROR: esigner error calling C_GetSlotList()
2016-10-18 15:17:01,244870 ERROR: esigner rv = 00000006
2016-10-18 15:17:01,244870 ERROR: esigner ulSlotCount = 0
2016-10-18 15:17:01,244870 ERROR: esigner pkcs11_init() failed
2016-10-18 15:17:01,245870 INFO: esigner ENGINE_set_default_RSA(0436CC30) = returned 0
2016-10-18 15:17:01,245870 INFO: esigner esiclGetToken() = end critical section
将 IIS 应用程序池标识更改为 LocalService 通常会有所帮助。不要问我为什么:)